标签:
在 Android 平台上,可以使用应用程序描述符的 android 元素将信息添加到 Android 应用程序清单,该清单是 Android 操作系统使用的应用程序属性文件。创建 APK 包时,ADT 会自动生成 Android Manifest.xml 文件。AIR 会将几个属性设置为某些功能运行所需要的值。在 AIR 应用程序描述符的 android 部分设置的任何其他属性都会添加到 Manifest.xml 文件的相应部分。
只能设置形式为字符串、整数或布尔值的属性。不支持对应用程序包中的资源的引用进行设置。
AIR 会在生成的 Android 清单文档中设置多个清单项目,以确保应用程序和运行时功能正确运行。您不能定义以下设置:
不能设置 manifest 元素的以下属性:
package
android:versionCode
android:versionName
xmlns:android
不能设置主 activity 元素的以下属性:
android:label
android:icon
不能设置 application 元素的以下属性:
android:theme
android:name
android:label
android:windowSoftInputMode
android:configChanges
android:screenOrientation
android:launchMode
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 功能需要的权限:
例如,若要为会需要每种权限的应用程序设置该权限,可以将以下内容添加到应用程序描述符:
<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>
可以使用自定义 URI 方案从网页或本机 Android 应用程序启动 AIR 应用程序。自定义 URI 支持依赖于 Android 清单中指定的方法滤镜,因此在其他平台上不能使用此技术。
若要使用自定义 URI,请将方法滤镜添加到应用程序描述符的 <android> 区块内。必须指定以下示例中的两个 intent-filter 元素。编辑 <data android:scheme="my-customuri"/> 语句以反映自定义方案的 URI 字符串。
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application>
<activity>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="my-customuri"/>
</intent-filter>
</activity>
</application>
</manifest>
]]>
</manifestAdditions>
</android>
方法滤镜会通知 Android 操作系统可以使用您的应用程序执行指定操作。对于自定义 URI 而言,这意味着用户单击了使用该 URI 方案的链接(浏览器不知道该如何处理)。
通过自定义 URI 调用应用程序时,NativeApplication 对象会调度一个 invoke 事件。此链接的 URL(包括查询参数)放在 InvokeEvent 对象的 arguments 数组中。您可以使用任意多个方法滤镜。
Android 操作系统使用应用程序清单文件中的大量元素来确定应用程序与指定设备是否兼容。可以选择将此信息添加到清单中。如果不包括这些元素,则可以将您的应用程序安装在任何 Android 设备上。但是,它可能不会在任何 Android 设备上都正常运行。例如,摄像头应用程序在没有摄像头的电话上将没有什么用处。
可以用于过滤的 Android 清单标签包括:
supports-screens
uses-configuration
uses-feature
uses-sdk(在 AIR 3+ 中)
如果为应用程序请求摄像头权限,Android 会假设应用程序需要所有可用的摄像头功能,包括自动聚焦和闪光。如果应用程序不需要所有摄像头功能,或者如果摄像头是可选功能,则应对摄像头的各个 uses-feature 元素进行设置以指示这些功能是可选的。否则,使用缺少某项功能或根本没有摄像头的设备的用户将无法找到 Android Market 上的应用程序。
以下示例说明了如何为摄像头请求权限,以及如何将所有摄像头功能设置为可选:
<android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.flash" android:required="false"/> </manifest> ]]> </manifestAdditions> </android>
如果您请求录音权限,则 Android 还会假设该应用程序需要麦克风。如果录音是您的应用程序的一个可选功能,则可以添加 uses-feature 标签以指定不需要麦克风。否则,使用不带麦克风设备的用户在 Android Market 上将找不到您的应用程序。
下面的例子说明了如何请求使用麦克风的权限,同时仍然使麦克风硬件处于可选状态:
<android> <manifestAdditions> <![CDATA[ <manifest> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-feature android:name="android.hardware.microphone" android:required="false"/> </manifest> ]]> </manifestAdditions> </android>
通过将 Android manifest 元素的 installLocation 属性设为 auto 或 preferExternal,您可以允许将应用程序安装或移动到外部存储卡上:
<android> <manifestAdditions> <![CDATA[ <manifest android:installLocation="preferExternal"/> ]]> </manifestAdditions> </android>
Android 操作系统不保证您的应用程序会安装到外部内存上。用户也可以使用系统设置应用程序将应用程序在内部与外部内存之间进行移动。
即使安装到外部内存,应用程序缓存和用户数据(如应用程序存储目录的内容、共享对象和临时文件)仍会存储在内部内存上。若要避免使用太多的内部内存,对于要保存到应用程序存储目录的数据应有所选择。应使用File.userDirectory 或 File.documentsDirectory 位置(这两者都会映射到 Android 上 SD 卡的根目录)将大量数据保存到 SDCard 上。
在 Android 3.0 以上的版本中,应用程序必须在 Android 应用程序元素中启用硬件加速,才能在 StageWebView 对象中显示插件内容。要启用插件渲染,可将 application 元素的 android:hardwareAccelerated 属性设置为 true:
<android> <manifestAdditions> <![CDATA[ <manifest> <application android:hardwareAccelerated="true"/> </manifest> ]]> </manifestAdditions> </android>
在 AIR 3 和更高版本中,运行时将显示设置为呈现 32 位颜色。在早期版本的 AIR 中,运行时使用 16 位颜色。您可通过使用应用程序描述符中的 <colorDepth> 元素,指示运行时使用 16 位颜色:
<android> <colorDepth>16bit</colorDepth> <manifestAdditions>...</manifestAdditions> </android>
使用 16 位颜色深度可提高渲染性能,但是会牺牲颜色保真度。
标签:
原文地址:http://blog.csdn.net/qq_15807167/article/details/51920233