Auf der Android-Plattform können Sie das
android
-Element des Anwendungsdeskriptors verwenden, um Informationen zum Android-Anwendungsmanifest hinzuzufügen. Das Manifest ist eine Datei mit Anwendungseigenschaften, die vom Android-Betriebssystem verwendet wird. ADT generiert die Android Manifest.xml-Datei automatisch, wenn Sie das APK-Paket erstellen. AIR setzt einige Eigenschaften auf die Werte, die für bestimmte Funktionen erforderlich sind. Alle anderen Eigenschaften, die im android-Abschnitt des AIR-Anwendungsdeskriptors festgelegt werden, werden dem entsprechenden Abschnitt der Manifest.xml-Datei hinzugefügt.
Hinweis:
Für die meisten AIR-Anwendungen müssen Sie die Android-Berechtigungen festlegen, die von Ihrer Anwendung benötigt werden, im
android
-Element festlegen, aber normalerweise brauchen Sie keine anderen Eigenschaften anzugeben.
Sie können nur Attribute festlegen, die String-, Ganzzahl- oder boolesche Werte annehmen. Das Festlegen von Verweisen auf Ressourcen im Anwendungspaket wird nicht unterstützt.
Hinweis:
Für die Laufzeit ist eine SDK-Version erforderlich, die gleich oder höher als 14 ist. Wenn Sie nur eine Anwendung in späteren Versionen erstellen möchten, sollten Sie darauf achten, dass die Manifestdatei
<uses-sdk android:minSdkVersion=""></uses-sdk>
mit der richtigen Version enthält.
Reservierte Android-Manifesteinstellungen
AIR legt verschiedene Manifesteinträge im generierten Android-Manifestdokument fest, um sicherzustellen, dass die Funktionen der Anwendung und der Laufzeitumgebung korrekt arbeiten. Sie können die folgenden Einstellungen nicht definieren:
manifest-Element
Die folgenden Attribute des manifest-Elements können Sie nicht festlegen:
-
package
-
android:versionCode
-
android:versionName
-
xmlns:android
activity-Element
Die folgenden Attribute des Hauptaktivitätselements können Sie nicht festlegen:
-
android:label
-
android:icon
application-Element
Die folgenden Attribute des application-Elements können Sie nicht festlegen:
Android-Berechtigungen
Das Android-Sicherheitsmodell erfordert, dass jede App Berechtigungen anfordert, um Funktionen zu verwenden, die sich auf Sicherheit oder Datenschutz auswirken können. Diese Berechtigungen müssen beim Komprimieren der App angegeben werden und können zur Laufzeit nicht geändert werden. Das Android-Betriebssystem informiert den Benutzer, welche Berechtigungen eine app anfordert, wenn der Benutzer sie installiert. Wird eine Berechtigung, die für eine Funktion erforderlich ist, nicht angefordert, kann das Android-Betriebssystem beim versuchten Zugriff Ihrer Anwendung auf diese Funktion einen Fehler ausgeben, dies muss jedoch nicht der Fall sein. Fehler werden von der Laufzeitumgebung an Ihre Anwendung übertragen. Bei einem Fehlschlagen ohne Meldung wird ein Eintrag zum Android-Systemprotokoll hinzugefügt.
In AIR geben Sie die Android-Berechtigungen im
android
-Element des Anwendungsdeskriptors an. Für das Hinzufügen von Berechtigungen wird das folgende Format verwendet (dabei ist BERECHTIGUNGSNAME der Name einer Android-Berechtigung):
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
</manifest>
]]>
</manifestAdditions>
</android>
Die uses-permissions-Anweisungen im
manifest
-Element werden direkt zum Android-Manifestdokument hinzugefügt.
Die folgenden Berechtigungen sind für die Verwendung verschiedener AIR-Funktionen erforderlich:
-
ACCESS_COARSE_LOCATION
-
Ermöglicht der Anwendung den Zugriff auf WLAN- und Mobilfunk-Standortdaten über die Geolocation-Klasse.
-
ACCESS_FINE_LOCATION
-
Ermöglicht der Anwendung den Zugriff auf GPS-Daten über die Geolocation-Klasse.
-
ACCESS_NETWORK_STATE und ACCESS_WIFI_STATE
-
Ermöglicht der Anwendung den Zugriff auf Netzwerkinformationen über die NetworkInfo-Klasse.
-
CAMERA
-
Ermöglicht der Anwendung den Zugriff auf die Kamera.
Hinweis:
Wenn Sie die Berechtigung zum Verwenden der Kamerafunktion anfordern, geht Android davon aus, dass Ihre Anwendung auch die Kamera benötigt. Falls die Kamera eine optionale Funktion Ihrer Anwendung ist, sollten Sie ein
uses-feature
-Element für die Kamera zum Manifest hinzufügen und dessen required-Attribute auf
false
setzen. Siehe
Android-Kompatibilitätsfilterung
.
-
INTERNET
-
Ermöglicht der Anwendung, Netzwerkanfragen zu senden. Ermöglicht auch das Remote-Debugging.
-
READ_PHONE_STATE
-
Ermöglicht der AIR-Laufzeitumgebung, den Ton während Telefongesprächen auszuschalten. Sie sollten diese Berechtigung setzen, falls Ihre App Audio abspielt, wenn sie sich im Hintergrund befindet.
-
RECORD_AUDIO
-
Ermöglicht der Anwendung den Zugriff auf das Mikrofon.
-
WAKE_LOCK und DISABLE_KEYGUARD
-
Ermöglicht der Anwendung, zu verhindern, dass das Gerät in den Standbymodus wechselt, indem die Einstellungen der SystemIdleMode-Klasse verwendet werden.
-
WRITE_EXTERNAL_STORAGE
-
Ermöglicht der Anwendung, auf die externe Speicherkarte des Geräts zu schreiben.
Um zum Beispiel die Berechtigungen für eine App festzulegen, die jede einzelne Berechtigung anfordert, könnten Sie dem Anwendungsdeskriptor Folgendes hinzufügen:
<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>
Benutzerdefinierte URI-Schemas unter Android
Sie können ein benutzerdefiniertes URI-Schema verwenden, um eine AIR-Anwendung von einer Webseite oder aus einer nativen Android-App zu starten. Die Unterstützung benutzerdefinierter URIs beruht auf Prioritätsfiltern, die im Android-Manifest angegeben werden. Diese Technik kann also nicht auf anderen Plattformen verwendet werden.
Um einen benutzerdefinierten URI zu verwenden, fügen Sie dem Anwendungsdeskriptor im
<android>
-Block ein intent-filter-Element hinzu. Im folgenden Beispiel müssen beide
intent-filter
-Elemente angegeben werden. Bearbeiten Sie die Anweisung
<data android:scheme="
my-customuri
"/>
, sodass Sie den URI-String für Ihr benutzerdefinierte Schema angibt.
<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>
Ein Prioritätsfilter teilt dem Android-Betriebssystem mit, dass Ihre Anwendung zur Verfügung steht, um eine bestimmte Aktion auszuführen. Im Fall eines benutzerdefinierten URIs bedeutet dies, dass der Benutzer auf einen Hyperlink getippt hat, der dieses URI-Schema verwendet (und der Browser weiß nicht, wie damit umzugehen ist).
Wenn Ihre Anwendung über einen benutzerdefinierten URI aufgerufen wird, setzt das NativeApplication-Objekt ein
invoke
-Ereignis ab. Die URL des Hyperlinks, einschließlich Abfrageparameter, wird im
arguments
-Array des InvokeEvent-Objekts platziert. Sie können beliebig viele Prioritätsfilter verwenden.
Hinweis:
Hyperlinks in einer StageWebView-Instanz können keine URLs öffnen, die ein benutzerdefiniertes URI-Schema verwenden.
Android-Kompatibilitätsfilterung
Das Android-Betriebssystem verwendet eine Reihe von Elementen in der Anwendungsmanifestdatei, um festzustellen, ob Ihre Anwendung mit einem bestimmten Gerät kompatibel ist. Das Hinzufügen dieser Informationen zum Manifest ist optional. Wenn Sie diese Elemente nicht einfügen, kann Ihre Anwendung auf jedem Android-Gerät installiert werden. Möglicherweise funktioniert sie jedoch nicht auf jedem Android-Gerät korrekt. Eine Kamera-App ist zum Beispiel nicht besonders hilfreich auf einem Smartphone ohne Kamera.
Sie können die folgenden Android-Manifest-Tags zum Filtern verwenden:
-
supports-screens
-
uses-configuration
-
uses-feature
-
uses-sdk (in AIR 3+)
Kameraanwendungen
Wenn Sie die Kameraberechtigung für Ihre Anwendung anfordern, geht Android davon aus, dass die App alle verfügbaren Kamerafunktionen benötigt, einschließlich Autofokus und Blitzlicht. Falls Ihre App nicht alle Kamerafunktionen benötigt oder die Kamera eine optionale Funktion ist, sollten Sie die verschiedenen
uses-feature
-Elemente für die Kamera entsprechend einstellen, um Funktionen als optional zu kennzeichnen. Andernfalls können Benutzer, bei deren Geräten eine dieser Funktionen fehlt oder überhaupt keine Kamera vorhanden ist, Ihre App im Android Market nicht finden.
Das folgende Beispiel zeigt, wie Berechtigungen für die Kamera angefordert und alle Kamerafunktionen als optional gekennzeichnet werden:
<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>
Anwendungen für Audioaufnahmen
Wenn Sie die Berechtigung zum Aufnehmen von Audio anfordern, geht Android davon aus, dass die App ein Mikrofon benötigt. Falls Audioaufnahmen eine optionale Funktion Ihrer App sind, können Sie ein uses-feature-Tag hinzufügen, um anzugeben, dass das Mikrofon nicht erforderlich ist. Andernfalls können Benutzer, deren Geräte kein Mikrofon haben, Ihre App im Android Market nicht finden.
Das folgende Beispiel zeigt, wie Sie die Berechtigung zum Verwenden des Mikrofons anfordern, die Mikrofonhardware dabei aber als optional kennzeichnen:
<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>
Installationspfad
Sie können zulassen, dass Ihre Anwendung auf der externen Speicherkarte installiert oder dorthin verschoben wird, indem Sie das
installLocation
-Attribute des Android-Elements
manifest
auf den Wert
auto
oder
preferExternal
einstellen:
<android>
<manifestAdditions>
<![CDATA[
<manifest android:installLocation="preferExternal"/>
]]>
</manifestAdditions>
</android>
Das Android-Betriebssystem garantiert nicht, dass Ihre App im externen Speicher installiert wird. Ein Benutzer kann die App mithilfe der Systemeinstellungen auch zwischen dem internen und externen Speichern verschieben.
Auch bei der Installation im externen Speicher werden Anwendungszwischenspeicher und Benutzerdaten, zum Beispiel der Inhalt des „app-storage“-Verzeichnisses, gemeinsame Objekte und temporäre Dateien im internen Speicher gespeichert. Damit nicht zu viel interner Speicher belegt wird, seien Sie wählerisch bezüglich der Daten, die im Anwendungsspeicherverzeichnis gespeichert werden. Große Datenmengen sollten auf der SD-Karte gespeichert werden, wobei die Speicherorte
File.userDirectory
oder
File.documentsDirectory
verwendet werden (die unter Android beide dem Stammorder der SD-Karte zugewiesen sind).
Aktivieren von Flash Player und anderen Plug-Ins in einem StageWebView-Objekt
In Android 3.0+ muss eine Anwendung die Hardwarebeschleunigung im Android-Anwendungselement aktivieren, damit Plug-In-Inhalte in einem StageWebView-Objekt angezeigt werden können. Um das Plug-In-Rendering zu aktivieren, stellen Sie das
android:hardwareAccelerated
-Attribut des
application
-Elements auf
true
ein:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application android:hardwareAccelerated="true"/>
</manifest>
]]>
</manifestAdditions>
</android>
Farbtiefe
In AIR 3 und höheren Versionen legt die Laufzeitumgebung die Anzeige auf den 32-Bit-Farbmodus fest. In früheren AIR-Versionen hat die Laufzeitumgebung den 16-Farbmodus verwendet. Sie können die Laufzeitumgebung anweisen, den 16-Bit-Farbmodus zu verwenden, indem Sie das <colorDepth>-Element im Anwendungsdeskriptor verwenden:
<android>
<colorDepth>16bit</colorDepth>
<manifestAdditions>...</manifestAdditions>
</android>
Die Verwendung der 16-Bit-Farbtiefe kann die Renderingleistung zwar verbessern, allerdings geht dies auf Kosten der Farbtreue.
|
|
|