Op het Android-platform kunt u het element
android
van de toepassingsdescriptor gebruiken om informatie toe te voegen aan het manifest van de Android-toepassing, dat een toepassingseigenschappenbestand is dat wordt gebruikt door het besturingssysteem Android. Het .xml-bestand van het Android-manifest wordt automatisch door ADT gegenereerd wanneer u het APK-pakket maakt. Door AIR worden enkele eigenschappen ingesteld voor de waarden die worden vereist zodat bepaalde functies werken. Overige eigenschappen die worden ingesteld in het Android-gedeelte van de AIR-toepassingsdescriptor, worden toegevoegd aan het corresponderende gedeelte van het .xml-bestand van het manifest.
Opmerking:
voor de meeste AIR-toepassingen moet u de Android-machtigingen die voor uw toepassing nodig zijn, instellen in het element
android
, maar doorgaans hoeft u geen andere eigenschappen in te stellen.
U kunt alleen attributen instellen met tekenreekswaarden, integere waarden of Boole-waarden. Het instellen van verwijzingen naar bronnen in het toepassingspakket wordt niet ondersteund.
Opmerking:
Voor de runtime wordt minimaal een SDK-versie vereist die gelijk is aan of groter dan 14. Als u een toepassing voor alleen de hogere versies wilt maken, moet u ervoor zorgen dat het volgende is opgenomen in het manifest:
<uses-sdk android:minSdkVersion=""></uses-sdk>
, waarbij respectievelijk de juiste versie wordt aangeduid.
Gereserveerde instellingen voor het Android-manifest
Door AIR worden verschillende manifestvermeldingen in het gegenereerde Android-manifestdocument ingesteld om te garanderen dat de toepassings- en runtimefuncties correct werken. U kunt de volgende instellingen niet definiëren:
element manifest
U kunt de volgende attributen niet instellen voor het element manifest:
-
package
-
android:versionCode
-
android:versionName
-
xmlns:android
activity-element
U kunt de volgende attributen niet instellen voor het hoofdelement activity:
-
android:label
-
android:icon
application-element
U kunt de volgende attributen niet instellen voor het element application:
Android-machtigingen
Het wordt door het Android-beveiligingsmodel vereist dat door elke toepassing een machtiging wordt gevraagd om functies te kunnen gebruiken die gevolgen voor de beveiliging of de privacy hebben. Deze machtigingen moeten worden opgegeven wanneer de toepassing wordt verpakt en kunnen niet worden gewijzigd tijdens het uitvoeren. De gebruikers worden door het Android-besturingssysteem op de hoogte gesteld welke machtiging door een toepassing wordt gevraagd en deze wordt door de gebruiker geïnstalleerd. Als voor een functie de vereiste machtiging niet wordt gevraagd, retourneert het Android-besturingssysteem mogelijk een uitzondering wanneer de functie door uw toepassing wordt geopend, maar een uitzondering is niet gegarandeerd. Uitzonderingen worden door de runtime naar uw toepassing verzonden. In het geval van een fout zonder foutmelding wordt een machtigingsfout toegevoegd aan het Android-systeemlogboek.
In AIR kunt u de Android-machtigingen opgeven in het element
android
van uw toepassingsdescriptor. De volgende indeling wordt gebruikt voor het toevoegen van machtigingen (wanneer PERMISSION_NAME de naam van een Android-machtiging is):
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
</manifest>
]]>
</manifestAdditions>
</android>
De instructies voor gebruiksmachtigingen in het element
manifest
worden direct toegevoegd aan het document van het Android-manifest.
De volgende machtigingen worden vereist om verschillende AIR-functies te kunnen gebruiken:
-
ACCESS_COARSE_LOCATION
-
Hiermee geeft u de toepassing via de klasse Geolocation toegang tot locatiegevens van het WiFi- en mobiele-telefoonnetwerk.
-
ACCESS_FINE_LOCATION
-
Hiermee krijgt de toepassing via de klasse Geolocation toegang tot GPS-gegevens.
-
ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
-
Hiermee geeft u de toepassing via de klasse NetworkInfo toegang tot netwerkgegevens.
-
CAMERA
-
Hiermee krijgt de toepassing toegang tot de camera.
Opmerking:
wanneer u toestemming vraagt om de camerafunctie te gebruiken, gaat Android ervan uit dat de camera ook voor uw toepassing wordt vereist. Als de camera een optionele functie van uw toepassing is, moet u een element
uses-feature
aan het manifest voor de camera toevoegen, waardoor het vereiste attribuut wordt ingesteld op
false
. Zie
Filtering van Android-compatibiliteit
.
-
INTERNET
-
Hiermee kan de toepassing netwerkverzoeken indienen en wordt foutopsporing op afstand mogelijk gemaakt.
-
READ_PHONE_STATE
-
Hiermee kan de AIR-runtime audio dempen tijdens telefoongesprekken. U moet deze machtiging instellen wanneer uw toepassing geluid afspeelt als deze op de achtergrond wordt uitgevoerd.
-
RECORD_AUDIO
-
Hiermee krijgt de toepassing toegang tot de microfoon.
-
WAKE_LOCK en DISABLE_KEYGUARD
-
Hiermee voorkomt de toepassing via de instellingen voor de klasse SystemIdleMode dat het apparaat inactief wordt.
-
WRITE_EXTERNAL_STORAGE
-
Hiermee kan de toepassing naar de externe geheugenkaart op het apparaat schrijven.
U kunt bijvoorbeeld, als u machtigingen wilt instellen voor een toepassing waarvoor alle machtigingen worden vereist, het volgende toevoegen aan de toepassingsdescriptor:
<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>
Aangepaste URI-schema's van Android
U kunt een aangepast URI-schema gebruiken om een AIR-toepassing op te starten op een webpagina of een native Android-toepassing. Ondersteuning van een aangepaste URI is afhankelijk van de intentfilters die worden opgegeven in het Android-manifest. Deze techniek kan dus niet worden gebruikt op overige platforms.
Als u een aangepaste URI wilt gebruiken, moet u een intentfilter toevoegen aan de toepassingsdescriptor in het blok
<android>
. Beide elementen
intent-filter
in het volgende voorbeeld moeten worden opgegeven. De instructie
<data android:scheme="
my-customuri
"/>
bewerken om de URI-tekenreeks weer te geven voor uw aangepaste schema.
<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>
Een intentfilter geeft informatie aan het Android-besturingssysteem over het feit dat uw toepassing beschikbaar is om een bepaalde actie uit te voeren. Bij een aangepaste URI betekent dit dat de gebruiker op een koppeling heeft geklikt die dat URI-schema gebruikt (en die de browser niet kan verwerken).
Wanneer uw toepassing wordt opgeroepen via een custom-URL, wordt door het NativeApplication-object een gebeurtenis
invoke
verzonden. De URL van de koppeling, inclusief queryparameters, wordt geplaatst in de array
arguments
van het object InvokeEvent. U kunt elk gewenst aantal intentfilters gebruiken.
Opmerking:
koppelingen in een StageWebView-instantie kunnen geen URL's openen die een aangepast URI-schema gebruiken.
Filtering van Android-compatibiliteit
Het Android-besturingssysteem gebruikt een aantal elementen in het toepassingsmanifest om te bepalen of uw toepassing compatibel is met een bepaald apparaat. Het is optioneel om deze gegevens aan het manifest toe te voegen. Als u deze gegevens niet opneemt, kan uw toepassing op alle Android-apparaten worden geïnstalleerd. De toepassing werkt echter mogelijk niet correct op alle Android-apparaten. Een cameratoepassing is bijvoorbeeld niet erg nuttig op een telefoon zonder camera.
De tags van het Android-manifest die u kunt gebruiken voor filtering zijn onder meer:
-
supports-screens
-
uses-configuration
-
uses-feature
-
uses-sdk (in AIR 3+)
Camera-toepassingen
Als u een cameramachtiging voor uw toepassing vraagt, gaat Android ervan uit dat voor de toepassing alle beschikbare camerafuncties worden vereist, inclusief automatisch scherpstellen en flitsen. Als voor uw toepassing niet alle beschikbare camerafuncties worden vereist, moet u de verschillende elementen
uses-feature
voor de camera instellen om aan te geven dat deze optioneel zijn. Als dit niet wordt gedaan, kunnen gebruikers met apparaten waarop één functie ontbreekt of waarop zich helemaal geen camera bevindt, uw toepassing niet vinden op de Android Market.
In het volgende voorbeeld wordt weergegeven hoe een machtiging voor de camera wordt gevraagd en hoe alle camerafuncties optioneel moeten worden gemaakt:
<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>
Toepassingen voor geluidsopnamen
Als u de machtiging vraagt voor het maken van geluidsopnamen, gaat Android er ook vanuit dat voor de toepassing een microfoon wordt gebruikt. Als het maken van geluidsopnamen een optionele functie van uw toepassing is, kunt u een tag 'uses-feature' toevoegen om aan te geven dat de microfoon niet wordt vereist. Als u dit niet doet, kunnen gebruikers met apparaten zonder microfoon uw toepassing niet op de Android Market vinden.
In het volgende voorbeeld wordt weergegeven hoe een machtiging voor het gebruik van de microfoon wordt gevraagd wanneer de microfoonhardware nog steeds optioneel blijft:
<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>
Installatielocatie
U kunt toestaan dat uw toepassing op de externe geheugenkaart wordt geïnstalleerd of ernaar wordt verplaatst, door het attribuut
installLocation
van het Android-element
manifest
in te stellen op
auto
of
preferExternal
:
<android>
<manifestAdditions>
<![CDATA[
<manifest android:installLocation="preferExternal"/>
]]>
</manifestAdditions>
</android>
Door het Android-besturingssysteem wordt niet gegarandeerd dat uw toepassing in het externe geheugen wordt geïnstalleerd. Een gebruiker kan de toepassing ook van intern naar extern geheugen verplaatsen met behulp van de
Zelfs wanneer deze in een extern geheugen zijn geïnstalleerd, worden de toepassingscache en gebruikersgegevens, zoals de inhoud van een map voor de toepassingsopslag, gedeelde objecten en tijdelijke bestanden, ook nog in het interne geheugen opgeslagen. Als u wilt voorkomen dat er te veel intern geheugen wordt gebruikt, moet u selectief zijn met betrekking tot de gegevens die u opslaat in de map voor de toepassingsopslag. Grote hoeveelheden gegevens moeten op de SD-kaart worden opgeslagen door de locatie
File.userDirectory
of
File.documentsDirectory
te gebruiken (beide locaties leiden bij Android naar de hoofdmap van de SD-kaart).
Flash Player en andere insteekmodules inschakelen in een StageWebView-object
In Android 3.0+ moet een toepassing de hardwareversnelling inschakelen in het Android application-element om de inhoud van een insteekmodule weer te geven in een StageWebView-object. Als u de weergave van inhoud van een insteekmodule wilt inschakelen, stelt u het
android:hardwareAccelerated
-kenmerk van het
toepassings
element in op
true
:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application android:hardwareAccelerated="true"/>
</manifest>
]]>
</manifestAdditions>
</android>
Kleurdiepte
In AIR 3 en later stelt de runtime de weergave in op het renderen van 32-bits kleuren. In eerdere versies van AIR maakt de runtime gebruik van 16-bits kleur. U kunt de runtime via het element <colorDepth> van het descriptorbestand van de toepassing opdracht geven 16-bits kleur te gebruiken:
<android>
<colorDepth>16bit</colorDepth>
<manifestAdditions>...</manifestAdditions>
</android>
Het gebruik van de 16-bits kleurdiepte kan de renderprestaties verbeteren, maar dat gaat ten koste van de kleurgetrouwheid.
|
|
|