在 Android 平台上,您可以使用應用程式描述器的
android
元素,新增資訊至 Android 應用程式資訊清單,這是 Android 作業系統所使用的應用程式屬性檔案。建立 APK 套件時,ADT 會自動產生 Android Manifest.xml 檔案。AIR 會將某些屬性設定為特定功能運作所需的值。在 AIR 應用程式描述器 android 區段中設定的任何其他屬性,會新增至 Manifest.xml 檔案中對應的區段。
備註:
對於多數 AIR 應用程式,您必須在
android
元素中設定應用程式所需的 Android 權限,但是通常不需要設定任何其他屬性。
您只能設定接受字串、整數或布林值的特質。不支援在應用程式套件中設定資源參照。
備註:
執行階段至少需要版本 14 以上的 SDK。如果您希望建立僅適用於較高版本的應用程式,請確定資訊清單包含正確版本的相應
<uses-sdk android:minSdkVersion=""></uses-sdk>
。
保留的 Android 資訊清單設定
AIR 會在產生的 Android 資訊清單文件中設定數個資訊清單項目,以確保應用程式與執行階段功能可正常運作。您無法定義下列設定:
manifest 元素
您無法設定 manifest 元素的下列特質:
-
package
-
android:versionCode
-
android:versionName
-
xmlns:android
activity 元素
您無法設定主要 activity 元素的下列特質:
-
android:label
-
android:icon
application 元素
您無法設定 application 元素的下列特質:
Android 權限
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>
Android 自訂 URI 配置
您可以使用自訂 URI 配置,從網頁或原生 Android 應用程式來啟動 AIR 應用程式。自訂 URI 支援有賴於 Android 資訊清單中指定的比對方式篩選,因此此技術無法用於其他平台。
若要使用自訂 URI,請新增 intent-filter 至
<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
陣列中。您可以使用任何數量的 intent-filters。
備註:
StageWebView 實體中的連結無法開啟使用自訂 URI 配置的 URL。
Android 相容性篩選
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 作業系統不保證您的應用程式將會安裝至外部記憶體。使用者也可以使用系統設定應用程式,在內部與外部記憶體之間移動應用程式。
應用程式即使安裝在外部記憶體,應用程式的快取與使用者資料 (像是 app-storage 目錄的內容、共用的物件與暫存檔案) 仍然儲存在內部記憶體中。為了避免使用過多的內部記憶體,請慎選儲存至應用程式儲存目錄的資料。大量資料應使用
File.userDirectory
或
File.documentsDirectory
位置 (兩者皆對應至 Android 上 SD 卡的根目錄) 儲存至 SDCard。
在 StageWebView 物件中啟用 Flash Player 和其他外掛程式
在 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 位元顏色深度可提高顯示效能,但會犠牲顏色精確度。
|
|
|