Die AndroidManifest.xml-Datei ist eine der wichtigsten Dateien in einer Android-App. Sie bietet dem Android-Betriebssystem wichtige Informationen über Ihre App, darunter die App-Komponenten (Aktivitäten, Services, Broadcast-Receivers, Content-Provider), benötigte Berechtigungen, unterstützte Bildschirmausrichtungen, App-Icon, App-Name und vieles mehr.
Das Manifest stellt sicher, dass die App korrekt mit dem System und anderen Apps interagieren kann. Jede App muss eine AndroidManifest.xml-Datei im Stammverzeichnis des Projekts enthalten.
Die Hauptelemente einer typischen AndroidManifest.xml-Datei sind:
<manifest>
: Das Wurzelelement des Manifests.
Es muss das package
-Attribut enthalten, das den Paketnamen
Ihrer App definiert.
<application>
: Dieses Element enthält alle
anderen Elemente, die Komponenten Ihrer App definieren.
<activity>
: Jedes dieser Elemente
repräsentiert eine Aktivität in Ihrer App. Eine Aktivität repräsentiert
einen einzelnen Bildschirm mit einer Benutzeroberfläche.
<service>
: Jedes dieser Elemente repräsentiert
einen Service in Ihrer App. Ein Service ist eine Komponente, die im
Hintergrund lang andauernde Operationen ausführt.
<receiver>
: Jedes dieser Elemente
repräsentiert einen Broadcast Receiver in Ihrer App. Ein Broadcast
Receiver ist eine Komponente, die auf Systemweite
Broadcast-Ankündigungen reagiert.
<provider>
: Jedes dieser Elemente
repräsentiert einen Content Provider in Ihrer App. Ein Content Provider
ist eine Komponente, die Daten aus Ihrer App für andere Apps
freigibt.
<uses-permission>
: Dieses Element fordert eine
Berechtigung an, die Ihre App benötigt. Die Berechtigungen können den
Zugriff auf sensible Benutzerdaten oder auf bestimmte Systemfunktionen,
wie die Kamera oder das Internet, ermöglichen.
Die Berechtigungen in Android definieren den Zugriff auf geschützte Teile des Betriebssystems oder auf Funktionen von anderen Anwendungen. Sie werden in der AndroidManifest.xml-Datei deklariert und vom System beim Installieren der Anwendung aus der APK-Datei gelesen.
Es gibt zwei Arten von Berechtigungen in Android: normale und gefährliche Berechtigungen.
Normale Berechtigungen decken Bereiche ab, die das System für sicher hält. Zum Beispiel die Berechtigung, das Internet zu nutzen, ist eine normale Berechtigung.
Gefährliche Berechtigungen decken Bereiche ab, die die Privatsphäre des Benutzers betreffen. Dazu gehört zum Beispiel der Zugriff auf die Kontakte, den Kalender oder die Standortdaten des Benutzers.
Berechtigungen werden mit dem
<uses-permission>
-Element im Manifest deklariert. Zum
Beispiel:
uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <
In diesem Beispiel fordert die App die Berechtigung zum Zugriff auf das Internet und die präzise Standortbestimmung des Benutzers an.
Ab Android 6.0 (Marshmallow, API Level 23) müssen die gefährlichen Berechtig
Hier ist ein Beispiel für eine typische AndroidManifest.xml-Datei:
<?xml version="1.0" encoding="utf-8"?>
manifest xmlns:android="http://schemas.android.com/apk/res/android"
< package="com.example.myapp">
<!-- Diese Berechtigung ermöglicht den Zugriff auf das Internet -->
uses-permission android:name="android.permission.INTERNET" />
<
application
< android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Hauptaktivität der App -->
activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<intent-filter>
</activity>
</
<!-- Eine andere Aktivität -->
activity android:name=".AnotherActivity" />
<
<!-- Ein Service -->
service android:name=".MyService" />
<
<!-- Ein Broadcast Receiver -->
receiver android:name=".MyBroadcastReceiver" />
<
<!-- Ein Content Provider -->
provider
< android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="false" />
application>
</
manifest> </
In diesem Beispiel hat die App die Berechtigung zum Zugriff auf das Internet. Sie definiert zwei Aktivitäten (MainActivity und AnotherActivity), einen Service (MyService), einen Broadcast Receiver (MyBroadcastReceiver) und einen Content Provider (MyContentProvider).
Beachten Sie, dass der android:name
-Attributwert für
jede Komponente der vollqualifizierte Name der Klasse ist, die die
Komponente implementiert.
Darüber hinaus hat die Hauptaktivität einen Intent-Filter, der
angibt, dass sie die “Haupt”-Aktivität der App ist, die gestartet wird,
wenn der Benutzer die App von der Startseite seines Geräts aus startet.
Dies wird durch die <action>
und
<category>
-Elemente innerhalb des
<intent-filter>
-Elements angezeigt.
Schließlich sind alle Komponenten innerhalb des
<application>
-Elements definiert, das weitere
Attribute enthält, die verschiedene Aspekte der gesamten App definieren,
wie z.B. das App-Icon, den App-Namen und das App-Theme.