Android携帯ゲームを作って世界に配信してみよう(5) ―― インターネットからデータをダウンロードするアプリを開発する

山田 元康

tag: 組み込み

エレキ系DIY 2012年5月10日

●セキュリティの設定が必要

 ソース・コードの修正は以上で完了ですが,このままアプリを起動して実行しようとするとセキュリティ・エラーが発生します.アプリがインターネットとの通信を行うには,特別な権限をアプリに付与する必要があります.リスト3の記述を AndroidManifest.xmlに追加してください.

 

リスト3 アプリにインターネットとの通信を許可する記述

        <uses-permission android:name="android.permission.INTERNET"></uses-permission>

 インターネットからダウンロードしたアプリが勝手にストレージやインターネットへアクセスできてしまうと,悪意があるアプリによりユーザの情報が盗まれる可能性があります.そのために,Androidでは,アプリが,ユーザの同意なく危険な機能を利用できないようになっています.

 まず,Androidアプリは,利用する機能を事前にAndroidManifest.xmlで宣言する必要があります.ユーザがアプリケーションをインストールする際には,その利用する機能がユーザに説明され,確認を求められます.機能の利用をユーザが許可した場合のみ,アプリケーションはインストールされます.ユーザに許可が求められるのは,起動時や実際に機能を利用するタイミングではなく,インストールされるタイミングです.

 そして,Androidアプリが利用する機能を宣言するタグが,<uses-permission>です.詳しくは,公式ドキュメント(http://developer.android.com/guide/topics/manifest/uses-permission-element.html)を参照してください.

 なお,<uses-permission>に似たタグに<uses-feature>というものがあります.<uses-permission>は,アプリが機能を利用する権限を要求する宣言です.それに対して<uses-feature>は,アプリが動作するために必要な機能を宣言します.

 例を挙げて説明します.例えば,カメラ機能が必須のアプリケーションは<uses-feature>でカメラ機能が必要であることを宣言する必要があります.そして,Android Market(現在はGoogle Playに改称)ではフィルタリングを行っており,カメラ機能を持っていないユーザには,カメラ機能が必要なアプリは表示されません.そうすることで,カメラ機能がないAndroid端末のユーザが,カメラ機能が必要なアプリをダウンロードすることがないようになっています.

 これに対して,「カメラ機能があればその機能を使うが,その機能がなくても動作する」アプリであれば,<uses-feature>ではなく<uses-permission>でカメラ機能を利用すると宣言することで,カメラ機能を持っていないユーザでもインストールできます.

 よく使うタグの権限を表2にまとめました.このほか,設定できる権限についてはこちらの公式ドキュメント(英語)で確認してください.
http://developer.android.com/reference/android/Manifest.permission.html

 

表2 よく使う<uses-permission>タグ

android.permission.INTERNETネットワーク・ソケットを開く権限を与える.
URLクラスのopenConnectionなどでインターネットとの接続を行うために必要
android.permission.VIBRATEバイブレータ機能の利用を与える
android.permission.CAMERAカメラ機能の利用権限を与える.
この権限を設定すると,AndroidManifesto.xmlの<uses-feature>にすべてのカメラ機能が必須であると暗黙に宣言される.「カメラ機能を利用するが,カメラがなくてもアプリを利用できる」場合や,「カメラの機能の一部しか必要ではない」場合は,AndroidManifesto.xmlの<uses-feature>のほうで,適切な設定を行うこと
android.permission.ACCESS_FINE_LOCATIONGPSを利用して,正確な位置情報を取得する権限を与える
android.permission.ACCESS_COARSE_LOCATION基地局やWi-Fiアクセス・ポイントの情報を利用して,だいたいの位置情報を取得する権限を与える
android.permission.READ_PHONE_STATE電話機の状態を取得する権限を与える.
TelephonyManagerクラスなどで,回線種別(GSMかCDMAかなど)やネットワーク種別(3GかHSDPAかなど),通話中かどうかなどの電話機の状態を取得するために必要
android.permission.MODIFY_AUDIO_SETTINGSAudioManagerクラスなどで,着信音の音量や音楽の再生音量の変更などを行うために必要

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日