Android セキュリティモデルでは、セキュリティまたはプライバシーと関連する機能を使用するために、各アプリケーションが権限を要求する必要があります。これらの権限は、アプリケーションをパッケージ化するときに指定する必要があり、実行時には変更できません。Android オペレーティングシステムは、ユーザーがアプリケーションをインストールするときに、アプリケーションがどの権限を要求しているかをユーザーに通知します。ある特定の機能に必要な権限が要求されないと、Android オペレーティングシステムは、アプリケーションがその機能にアクセスするときに、例外をスローする場合があります。ただし、例外が必ずスローされるとは保証されません。例外は、ランタイムによってアプリケーションに送信されます。サイレント障害の場合、権限に関するエラーメッセージが Android システムログに追加されます。
AIR では、アプリケーション記述子の
android
エレメントに Android 権限を指定します。次のフォーマットは、権限を追加する場合に使用されます(PERMISSION_NAME は Android 権限の名前です)。
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
</manifest>
]]>
</manifestAdditions>
</android>
manifest
エレメント内の uses-permissions ステートメントは、Android マニフェストドキュメントに直接追加されます。
次の権限は、様々な AIR 機能を使用するために必要になります。
-
ACCESS_COARSE_LOCATION
-
アプリケーションが、Geolocation クラスを介して Wi-Fi およびセルラーネットワーク位置データにアクセスすることを許可します。
-
ACCESS_FINE_LOCATION
-
アプリケーションが Geolocation クラスを介して GPS データにアクセスすることを許可します。
-
ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
-
アプリケーションが、NetworkInfo クラスを介して ネットワーク情報にアクセスすることを許可します。
-
CAMERA
-
アプリケーションがカメラにアクセスすることを許可します。
注意:
ユーザーがカメラ機能を使用するための権限を要求するとき、Android では、アプリケーションもカメラを要求していると見なされます。カメラがアプリケーションのオプションの機能である場合、カメラのマニフェストに
uses-feature
エレメントを追加し、必要な属性を
false
に設定します。
Android の互換性フィルター
を参照してください。
-
INTERNET
-
アプリケーションがネットワーク要求を行うことを許可します。また、リモートデバッグも許可します。
-
READ_PHONE_STATE
-
AIR ランタイムが、ユーザーの電話中にオーディオをミュートすることを許可します。この権限は、アプリケーションがバックグラウンド状態の間にオーディオを再生する場合に設定します。
-
RECORD_AUDIO
-
アプリケーションがマイクにアクセスすることを許可します。
-
WAKE_LOCK および DISABLE_KEYGUARD
-
アプリケーションが、SystemIdleMode クラス設定を使用してデバイスのスリープ状態を防ぐことを許可します。
-
WRITE_EXTERNAL_STORAGE
-
アプリケーションがデバイスの外部メモリカードへ書き込むことを許可します。
例えば、強制的にすべての権限を要求するアプリケーションに対する権限を設定するために、アプリケーション記述子に以下を追加できます。
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
]]>
</manifestAdditions>
</android>