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>