Android携帯ゲームを作って世界に配信してみよう(5) ―― インターネットからデータをダウンロードするアプリを開発する
●セキュリティの設定が必要
ソース・コードの修正は以上で完了ですが,このままアプリを起動して実行しようとするとセキュリティ・エラーが発生します.アプリがインターネットとの通信を行うには,特別な権限をアプリに付与する必要があります.リスト3の記述を AndroidManifest.xmlに追加してください.
<uses-permission android:name="android.permission.INTERNET"></uses-permission> |
インターネットからダウンロードしたアプリが勝手にストレージやインターネットへアクセスできてしまうと,悪意があるアプリによりユーザの情報が盗まれる可能性があります.そのために,Androidでは,アプリが,ユーザの同意なく危険な機能を利用できないようになっています.
まず,Androidアプリは,利用する機能を事前にAndroidManifest.xmlで宣言する必要があります.ユーザがアプリケーションをインストールする際には,その利用する機能がユーザに説明され,確認を求められます.機能の利用をユーザが許可した場合のみ,アプリケーションはインストールされます.ユーザに許可が求められるのは,起動時や実際に機能を利用するタイミングではなく,インストールされるタイミングです.
そして,Androidアプリが利用する機能を宣言するタグが,<uses-permission>
なお,
例を挙げて説明します.例えば,カメラ機能が必須のアプリケーションは
これに対して,「カメラ機能があればその機能を使うが,その機能がなくても動作する」アプリであれば,
よく使う
http://developer.android.com/reference/android/Manifest.permission.html
android.permission.INTERNET | ネットワーク・ソケットを開く権限を与える. URLクラスのopenConnectionなどでインターネットとの接続を行うために必要 |
android.permission.VIBRATE | バイブレータ機能の利用を与える |
android.permission.CAMERA | カメラ機能の利用権限を与える. この権限を設定すると,AndroidManifesto.xmlの<uses-feature>にすべてのカメラ機能が必須であると暗黙に宣言される.「カメラ機能を利用するが,カメラがなくてもアプリを利用できる」場合や,「カメラの機能の一部しか必要ではない」場合は,AndroidManifesto.xmlの<uses-feature>のほうで,適切な設定を行うこと |
android.permission.ACCESS_FINE_LOCATION | GPSを利用して,正確な位置情報を取得する権限を与える |
android.permission.ACCESS_COARSE_LOCATION | 基地局やWi-Fiアクセス・ポイントの情報を利用して,だいたいの位置情報を取得する権限を与える |
android.permission.READ_PHONE_STATE | 電話機の状態を取得する権限を与える. TelephonyManagerクラスなどで,回線種別(GSMかCDMAかなど)やネットワーク種別(3GかHSDPAかなど),通話中かどうかなどの電話機の状態を取得するために必要 |
android.permission.MODIFY_AUDIO_SETTINGS | AudioManagerクラスなどで,着信音の音量や音楽の再生音量の変更などを行うために必要 |