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 類別存取 WIFI 與行動電話網路位置資料。
-
ACCESS_FINE_LOCATION
-
允許應用程式透過 Geolocation 類別存取 GPS 資料。
-
ACCESS_NETWORK_STATE 與 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>