Es gibt mehrere Möglichkeiten, Geräte bereitzustellen. Die geschäftlichen Anforderungen Ihrer Kunden bestimmen, welche Bereitstellungsmethoden Sie verwenden möchten.
Gerätebereitstellung – Grundlagen
Die Bereitstellungsszenarios für die Gerätebereitstellung, die Ihre Kunden unterstützen möchten (z. B. BYOD oder unternehmenseigene Geräte), bestimmen die Betriebsmodi, z. B. den Modus „Geräteeigentümer“ oder „Profilinhaber“. Ebenso bestimmen die von Ihnen unterstützten Betriebsarten und Android-Releases, welche Bereitstellungsmethoden Sie implementieren.
Bereitstellungsszenarien
In einem unternehmenseigenen Bereitstellungsszenario hat das Unternehmen die Kontrolle über die von seinen Mitarbeitern verwendeten Geräte und hat diese vollständig im Griff. Normalerweise stellen Unternehmen unternehmenseigene Geräte bereit, wenn sie das gesamte Gerät genau beobachten und verwalten müssen.
Unternehmen, die ein BYOD-Bereitstellungsszenario unterstützen, ermöglichen ihren Mitarbeitern, unternehmenseigene Geräte zu verwenden und diese Geräte für den Zugriff auf privilegierte Unternehmensinformationen und -anwendungen zu verwenden.
Betriebsarten
Unternehmenseigene Bereitstellungen werden vom Betriebsmodus Geräteinhaber unterstützt. In Android wird Ihre Verwaltungsanwendung als Device Policy Controller (DPC) bezeichnet. Der DPC erzwingt Richtlinien auf einem Android-Gerät und verwaltet das gesamte Gerät, wenn es als Geräteinhaber agiert. Als Geräteinhaber kann der DPC geräteweite Aktionen ausführen, z. B. die geräteweite Konnektivität konfigurieren, globale Einstellungen konfigurieren und das Gerät auf die Werkseinstellungen zurücksetzen.
BYOD-Bereitstellungen werden vom Betriebsmodus Profilinhaber unterstützt. Über den DPC ermöglicht das Unternehmen private Geräte für die geschäftliche Nutzung, indem er dem primären Nutzerkonto auf dem Gerät ein Arbeitsprofil hinzufügt. Das Arbeitsprofil ist dem primären Nutzer zugeordnet, jedoch als separates Profil. Als Profilinhaber verwaltet der DPC nur das Arbeitsprofil auf dem Gerät und hat außerhalb des Arbeitsprofils eingeschränkte Kontrolle.
Legacy-Gerätebereitstellungen werden vom Betriebsmodus Legacy unterstützt, der die eingeschränkte DPC-Steuerung eines Geräts ermöglicht (z. B. die Möglichkeit, Gerätedaten zu löschen, einen Sicherheitscode zu erzwingen oder bestimmte Richtlinien zu erzwingen). Sie können die App-Verwaltung auf Legacy-Geräten über Google Play bereitstellen, indem Sie dem Nutzer erlauben, ein Google-Konto hinzuzufügen, oder Ihren DPC einem verwalteten Google Play-Konto auf dem alten Gerät hinzufügen lassen.
Es wird nicht empfohlen, den Legacy-Modus für Bereitstellungen zu verwenden, in denen Sie den Modus „Geräteinhaber“ oder „Profilinhaber“ implementieren können. Sie sollten die höchste Geräteverwaltungsstufe verwenden, anstatt eine Lösung mit dem kleinsten gemeinsamen Nenner für eine große Flotte zu verwenden.
Bereitstellungsmethoden für Geräteinhaber
Sie müssen den Betriebsmodus des Geräteinhabers bei der Ersteinrichtung eines neuen Geräts oder nach dem Zurücksetzen auf die Werkseinstellungen bereitstellen. Der Modus „Geräteinhaber“ kann auf einem Gerät nicht gleichzeitig bereitgestellt werden.
Je nach Anwendungsfall gibt es zwei Hauptarten von Bereitstellungsmethoden für den Modus „Geräteinhaber“.
- In einem gerätebasierten Ablauf können IT-Administratoren NFC verwenden, um eine große Anzahl von Geräten bereitzustellen. Dieser Ablauf kann für Managed Play Store- oder G Suite-Szenarien verwendet werden.
- Bei einem nutzergesteuerten Ablauf hängen die Optionen davon ab, ob die Organisation die G Suite verwendet.
- In einem G Suite-Szenario fügt der Nutzer sein Google-Konto bei der Ersteinrichtung des Geräts hinzu und der DPC muss ihn durch die Schritte zum Einrichten des Geräteinhabers führen. Ein nutzergesteuerter Vorgang kann Endnutzern beim Einrichten neuer Geräte helfen und ist auch eine Alternative, wenn Geräte NFC nicht unterstützen.
- Wenn eine Organisation die G Suite nicht verwendet, sollten Sie die Methode Managed Play Store verwenden.
Bereitstellungsmethoden für Profilinhaber
Die empfohlene Methode zum Bereitstellen des Modus des Profilinhabers hängt davon ab, ob die Organisation die G Suite verwendet.
- Im G Suite-Fall wird eine nutzergesteuerte Methode empfohlen, bei der der Nutzer sein Google-Konto hinzufügt und der DPC den Nutzer durch die Schritte zum Einrichten des Profilinhabers führt.
- Wenn eine Organisation die G Suite nicht verwendet, wird die Methode Managed Google Play Accounts empfohlen.
Die herkömmliche Methode, bei der der Nutzer angewiesen wird, den DPC manuell zu installieren, wird ebenfalls unterstützt. Der Nutzer muss Ihre DPC von Google Play herunterladen und installieren und den Nutzer dann durch den DPC führen, um den Profilinhaber einzurichten.
Bereitstellungsmethoden für alte Geräte
Auf älteren Geräten werden Android-Versionen vor 5.0 ausgeführt oder unterstützt keine Arbeitsprofile. Die empfohlene Methode zum Bereitstellen eines alten Geräts hängt davon ab, ob die Organisation verwaltete Google-Konten verwendet.
- Im Fall von verwalteten Google-Konten ist die empfohlene Methode ein nutzergesteuerter Vorgang, bei dem der Nutzer sein Google-Konto hinzufügt und der DPC den Nutzer durch die Schritte zur Einrichtung führt.
- Wenn eine Organisation keine verwalteten Google-Konten verwendet, wird die Methode Managed Play Store empfohlen, bei der der Nutzer den DPC über Google Play installiert. Der DPC kann einem alten Gerät Managed Google Play-Konten hinzufügen, ähnlich wie das Konto einem Arbeitsprofil hinzugefügt wird.
Die herkömmliche Methode, bei der der Nutzer aufgefordert wird, den DPC manuell zu installieren und der DPC dann ein Google-Konto hinzufügt, wird ebenfalls unterstützt. Der Nutzer muss Ihre DPC von Google Play herunterladen und installieren und dann den DPC durch den Rest des Einrichtungsprozesses leiten.
Die wichtigsten Unterschiede bei der Nutzerverwaltung für alle Android-Versionen
Bereitstellung Szenario |
Betriebsart des Betriebs |
Bereitstellungsmethode |
* Vor 5,0 |
5,0 5,1 |
6,0, später |
7,0, später |
Gehört dem Unternehmen | Geräteeigentümer | QR-Code | ✓ | |||
Managed Play Store-Konten | ✓ | ✓ | ||||
Google-Konto | ✓ | ✓ | ||||
NFC | ✓ | ✓ | ✓ | |||
Legacy | Managed Play Store-Konten | ✓ | ||||
Google-Konto | ✓ | |||||
Eigene Geräte (Bring Your Own Device – BYOD) | Profilinhaber | Managed Play Store-Konten | ✓ | ✓ | ✓ | |
Google-Konto | **5,1 | ✓ | ✓ | |||
Manuelle DPC-Installation | ✓ | ✓ | ✓ | |||
Legacy | Managed Play Store-Konten | ✓ | ||||
Google-Konto | ✓ | |||||
Manuelle DPC-Installation | ✓ |
*Der alte Modus wird auch für Geräte empfohlen, die keine Arbeitsprofile unterstützen, auch wenn auf dem Gerät eine Android-Version nach 5.0 installiert ist. Diese Geräte haben in der Regel wenig RAM.
**Die Android-Kontomethode in Android 5.1 unterstützt nur den Betriebsmodus des Profilinhabers und der Nutzer kann ihn nur unter Einstellungen > Konto hinzufügen konfigurieren.
Allgemeine Hinweise zur Implementierung
Beachten Sie beim Schreiben des DPC einige Punkte, unabhängig davon, welchen Betriebsmodus Sie implementieren.
Kompatibilität mit Google Play-Diensten
Im APK-Leitfaden für Google Play-Dienste werden Entwickler angewiesen, eine Versionsprüfung der Google Play-Dienste durchzuführen, bevor API-Transaktionen durchgeführt werden. Da der Versuch, die Google Play-Dienste zu aktualisieren, zu schwerwiegenden Störungen bei der Geräteeinrichtung führt, darf der DPC die Google Play-Dienste nicht aktualisieren, bevor die Gerätebereitstellung abgeschlossen ist.
Wichtige Punkte zur DPC-Kompatibilität mit Google Play-Diensten:
- Der DPC sollte über die Google Play-Dienste ausgeführt werden, die mit einem bestimmten Gerät ausgeliefert wurden.
- Der DPC sollte sich nicht darauf verlassen, dass neue Funktionen in zukünftigen Versionen der Google Play-Dienste zum Zeitpunkt der Gerätebereitstellung verfügbar sind.
Nach Abschluss der Gerätebereitstellung kann der DPC den Nutzer auffordern, die Google Play-Dienste zu aktualisieren, damit der DPC die neuesten Funktionen verwenden kann. Wenn eine Funktion jedoch aus irgendeinem Grund nicht verfügbar ist, muss der DPC ordnungsgemäß auf die Version zurückgreifen, die im Lieferumfang des Geräts enthalten war.
Hinweise zur Implementierung des Profilinhabermodus
Berücksichtigen Sie Folgendes, wenn Sie den DPC schreiben, um den Profilinhabermodus zu implementieren.
Persönlichen DPC entfernen oder deaktivieren
Bei der Bereitstellung des Profilinhabermodus wird der DPC im privaten Profil ausgeführt und der Prozess zum Erstellen eines Arbeitsprofils wird gestartet. Nachdem das Arbeitsprofil erstellt wurde, wird der DPC auch im Arbeitsprofil ausgeführt. Der DPC im Arbeitsprofil schließt den Bereitstellungsprozess ab. Zu diesem Zeitpunkt sollte sich der DPC im privaten Profil selbst deaktivieren oder der Gerätenutzer sollte ihn entfernen.
Nutzer entfernt den privaten DPC
- Der persönliche DPC überwacht
ACTION_MANAGED_PROFILE_PROVISIONED.
. Bei Geräten mit Android 5.1 sollte stattdessen der persönliche DPC aufACTION_MANAGED_PROFILE_ADDED
warten. - Der private DPC initiiert eine Deinstallationsanfrage
ACTION_UNINSTALL_PACKAGE
. Dadurch wird der Nutzer aufgefordert, den privaten DPC zu deinstallieren. Für eine optimale Nutzererfahrung sollte die Deinstallation während der Bereitstellung erfolgen.
Persönlicher DPC deaktiviert sich selbst
- Der persönliche DPC überwacht
ACTION_MANAGED_PROFILE_PROVISIONED.
. Bei Geräten mit Android 5.1 sollte stattdessen der persönliche DPC aufACTION_MANAGED_PROFILE_ADDED
warten. - Gegebenenfalls sollte der private DPC die Administratorberechtigungen für Geräte aufheben, bevor er sich selbst deaktiviert.
- Der persönliche DPC initiiert eine
setApplicationEnabledSetting
-Deaktivierungsanfrage mit dem ParameterCOMPONENT_ENABLED_STATE_DISABLED
. - Der Nutzer kann den privaten DPC über Google Play wieder aktivieren.
Hinweise zur Implementierung des Modus „Geräteeigentümer“
Berücksichtigen Sie Folgendes, wenn Sie den DPC schreiben, um den Modus für Geräteinhaber zu implementieren.
Gerät muss neu sein oder auf Werkseinstellungen zurückgesetzt werden
Sie müssen den Betriebsmodus des Geräteinhabers bei der Ersteinrichtung eines neuen Geräts oder nach dem Zurücksetzen auf die Werkseinstellungen bereitstellen. Der Modus „Geräteinhaber“ kann auf einem Gerät nicht gleichzeitig bereitgestellt werden.
Im Modus „Geräteeigentümer“ hat der DPC die vollständige Kontrolle über ein Gerät. Wenn der Modus „Geräteinhaber“ nach der Ersteinrichtung bereitgestellt wurde, gilt Folgendes:
- Malware könnte potenziell einen Geräteeigentümer erstellen und das Gerät übernehmen.
- Datenschutzprobleme können auftreten, wenn auf dem Gerät bereits Nutzerdaten oder Apps vorhanden sind.
Modus „Geräteeigentümer“ nur auf unternehmenseigenen Geräten einrichten
Sie sollten den Modus „Geräteinhaber“ nur auf Geräten bereitstellen, die nach eigenen Angaben dem Unternehmen Ihres Kunden gehören. Sie können dies prüfen, indem Sie eine eindeutige Gerätekennung (z. B. eine Seriennummer) erkennen oder eine spezielle Gruppe von Konten verwenden, die über Ihre EMM-Richtlinie für die Geräteregistrierung autorisiert sind.
Wenn Sie die Unternehmensinhaberschaft eines Geräts nicht bestätigen können, müssen Sie einen fehlersicheren Mechanismus erstellen, damit der Geräteinhabermodus nicht versehentlich bereitgestellt wird. Sie können beispielsweise den Gerätenutzer auffordern, vor dem Bereitstellen des Modus „Geräteinhaber“ eine Bestätigung oder eine Aktion auszuführen.
System-Apps aktivieren
Wenn der DPC ein Arbeitsprofil bereitstellt, wird davon ausgegangen, dass alle System-Apps ohne Launcher-Symbole für das Gerät kritisch sind und automatisch im Arbeitsprofil ausgeführt werden dürfen. System-Apps mit Launcher-Symbolen werden als optional angesehen und du kannst sie aktivieren.
System-Apps über Google Play aktivieren
Die Aktivierung von System-Apps bei Google Play ist ganz einfach und Nutzer erhalten App-Updates, sobald diese verfügbar sind.
System-Apps mit Android-Framework-APIs aktivieren
Wenn Sie möchten, dass Nutzer System-Apps sehen können, sobald sie ihre Geräte verwenden, aktivieren Sie System-Apps im Rahmen der Gerätebereitstellung. Der DPC aktiviert System-Apps mithilfe von DevicePolicyManager.enableSystemApp()
nach Paketname oder Intent.
Es gibt verschiedene Möglichkeiten, die System-Apps zu identifizieren, die Sie in Ihrer EMM-Konsole für IT-Administratoren aktivieren und präsentieren möchten.
System-App-Kataloge erstellen
Bei dieser Methode bestimmt jedes Gerät, welche Apps sich auf dem Gerät befinden, und sendet diese Daten an die EMM-Konsole zurück. In der EMM-Konsole werden diese Daten beim Erstellen der Geräterichtlinie dynamisch angezeigt. Dadurch kann der IT-Administrator Anwendungen auf Anwendungsbasis verwalten.
- Wenn das Arbeitsprofil noch nicht auf dem Gerät bereitgestellt ist, rufen Sie mit
queryIntentActivities()
eine Liste aller Apps mit Launcher-Symbolen auf dem Gerät ab:
private List
getAppsWithLauncher() {
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
return getPackageManager().queryIntentActivities(i, 0);
} - Wenn das Arbeitsprofil bereits auf dem Gerät bereitgestellt wurde, rufen Sie mit
PackageManager.GET_DISABLED_COMPONENTS
undPackageManager.GET_UNINSTALLED_PACKAGES
eine Liste aller Apps im Arbeitsprofil ab. - Suchen Sie in der Apps-Liste nach System-Apps. Klicken Sie dazu auf
FLAG_SYSTEM
. Das gibt an, ob eine App im System-Image des Geräts installiert ist.
Vorteile:
- IT-Administratoren erhalten ein vollständiges Bild der Apps auf allen Geräten.
- Sie können genau steuern, welche Apps aktiviert werden.
Nachteile:
- Da jedes Gerät einen anderen App-Katalog hat, ist es schwierig, ein Modell mit einer einzelnen Richtlinienkonfiguration auf mehrere Gerätetypen anzuwenden.
- Es kann schwierig sein, die Menge der OEM-spezifischen Anwendungen für IT-Administratoren auf sinnvolle Weise zu präsentieren.
System-Apps nach Funktionalität kategorisieren
Wenn ein IT-Administrator eine System-App für eine Gruppe von Geräten aktivieren möchte, wählt er anhand von Funktionen eine generische App aus, z. B. „Systembrowser“. Der DPC lässt dann alle System-Apps für diesen Intent zu.
Vorteile:
- Einfache, funktionsbasierte Aktivierung für IT-Administratoren.
- Sorgt für konsistente Funktionen auf verschiedenen Geräten (zumindest für gängige Anwendungsfälle)
Nachteile:
- System-Apps werden auf alle Gerätetypen beschränkt.
- IT-Administratoren möchten möglicherweise eine OEM-Version einer Anwendung (z. B. einen Samsung®-Browser) bereitstellen und keine andere (z. B. einen LG®-Browser).
- IT-Administratoren möchten möglicherweise nicht mehrere Anwendungen per Push übertragen, können dies jedoch nicht verhindern, wenn mehrere Intent-Handler vorhanden sind.
Nur genehmigte System-Apps unterstützen
Sie arbeiten mit dem OEM zusammen, um bestimmte OEM-Pakete zu identifizieren und nur diese Pakete in der EMM-Konsole zu unterstützen. Auf diese Weise können Sie auch die verwalteten Konfigurationen für die OEM-App katalogisieren, was Sie sonst nicht wissen würden, da die OEM-App nicht bei Google Play gehostet wird.
Vorteile:
- Der Integrationsworkflow wird erheblich vereinfacht und die Grenzfälle, die in den ersten beiden Optionen problematisch sind, werden beseitigt.
- Sie können die verwalteten Konfigurationen für die OEM-App katalogisieren und in der EMM-Konsole für IT-Administratoren präsentieren.
- Ermöglicht enge Beziehungen zu OEMs zur Unterstützung von Flagship-Geräten.
Nachteile:
- Weniger skalierbar, wodurch die Wahlmöglichkeiten für Verbraucher reduziert werden.
Überlegungen zur Implementierung für den Legacy-Modus
Beachten Sie beim Schreiben Ihres DPC die folgenden Punkte, um den Legacy-Betriebsmodus zu implementieren.
Herausfinden, ob ein Gerät Arbeitsprofile unterstützt
Für Geräte, die keine Arbeitsprofile unterstützen, können Sie den alten Betriebsmodus bereitstellen. Ein Gerät unterstützt keine Arbeitsprofile, wenn das Gerät:
- Es wird eine ältere Android-Version als 5.0 verwendet.
- Wenig RAM, auch wenn eine Android-Version nach 5.0 installiert ist
Der DPC kann den PackageManager verwenden, um festzustellen, ob Arbeitsprofile unterstützt werden.
if (!getPackageManager().hasSystemFeature(
PackageManager.FEATURE_MANAGED_USERS)) {
// Use legacy mode
...
}
Testszenarien für Ihren DPC
Test DPC ist eine Open-Source-App von Google zum Testen der Unternehmensfunktionen in Ihrer DPC-App. Test-DPC ist über GitHub oder Google Play verfügbar. Mit Test-DPC können Sie:
- Funktionen in Android simulieren
- Richtlinien festlegen und erzwingen
- Einschränkungen für Apps und Intents festlegen
- Arbeitsprofile einrichten
- Vollständig verwaltete Android-Geräte einrichten
Test-DPC ist in erster Linie als Hilfsmittel zum Testen Ihrer Unternehmenslösung für Android gedacht, Sie können ihn aber auch als Quellcode für Android-Funktionen verwenden.
Nutzerverwaltung anpassen
Während der Gerätebereitstellung wird in der Statusleiste eine Standardfarbe und oben auf dem Bildschirm ein Standardlogo angezeigt. Sie können benutzerdefinierte Farben und Logos festlegen, um einen einheitlichen visuellen Übergang zwischen Ihrem DPC und der Systemschnittstelle zu ermöglichen, oder Administratoren die Verwendung Ihrer EMM-Konsole gestatten. Ein Administrator kann beispielsweise ein Firmenlogo hochladen oder das Erscheinungsbild von Bildschirmen mit Benachrichtigungen anpassen.
Ihr DPC erzwingt die Farb- und Logoauswahl mit den Extras DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
und DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
.
Zum Festlegen einer benutzerdefinierten Farbe verwenden Sie EXTRA_PROVISIONING_MAIN_COLOR
, um eine Ganzzahl festzulegen, die die vorherrschende Farbe während der Gerätebereitstellung angibt. Fügen Sie den zusätzlichen Wert (konstante) mit ACTION_PROVISION_MANAGED_PROFILE
oder ACTION_PROVISION_MANAGED_DEVICE
in einen Intent ein.
Wie die Ganzzahlen dargestellt werden, erfahren Sie unter Farbe. Ein Beispiel finden Sie unter MAIN_COLOR in
the TestDPC app
.
Sie können ein benutzerdefiniertes Logo festlegen. Verwenden Sie dazu EXTRA_PROVISIONING_LOGO_URI
, um ein Image festzulegen, das während der Gerätebereitstellung oben auf dem Bildschirm angezeigt wird. Fügen Sie das zusätzliche Element (Konstante) mit ACTION_PROVISION_MANAGED_PROFILE
oder ACTION_PROVISION_MANAGED_DEVICE
in einen Intent ein. Das Bild muss eine angemessene Pixeldichte für das Gerät haben.
Ein Beispiel finden Sie in der TestDPC-Anwendung unter LOGO_URI
.
QR-Code-Methode
Die Bereitstellungsmethode für den QR-Code richtet den Geräteinhabermodus ein und konfiguriert ihn, indem er einen QR-Code aus dem Einrichtungsassistenten scannt. Der QR-Code enthält eine Nutzlast von Schlüssel/Wert-Paaren mit allen Informationen, die der DPC zur Bereitstellung eines Geräts benötigt.
Ihre EMM-Konsole sollte es IT-Administratoren ermöglichen, QR-Codes für die Geräte zu erstellen, die sie bereitstellen möchten. Der IT-Administrator sendet die QR-Codes an seine Endnutzer und die Endnutzer stellen ihre Geräte bereit, indem sie die QR-Codes scannen.
Anwendungsfälle für die Bereitstellung von QR-Codes
Einige Geräte, z. B. Tablets, unterstützen NFC nicht. Die QR-Code-Bereitstellung ist eine einfache Möglichkeit, einen verteilten Gerätepool bereitzustellen, der NFC nicht unterstützt. Ein IT-Administrator kann QR-Codes an seine Nutzer senden, um die Nutzerverwaltung zu ermöglichen.
Für die Bereitstellung des QR-Codes ist keine Google-Identität wie eine Google-Domain oder ein Google-Konto erforderlich. Organisationen, die Android verwenden, aber die G Suite nicht verwenden, haben keine Google-Identität.
Wie bei NFC ermöglicht die Bereitstellung von QR-Codes Kiosk- und Einmalbereitstellungen, bei denen eine Google-Identität (oder eine beliebige Identität) nicht benötigt oder gewünscht wird. Beispielsweise gehört ein Kioskgerät in einem Geschäft niemandem und sollte keine Endnutzeridentität haben.
QR-Code erstellen
Ein gültiger QR-Code für die Bereitstellung von QR-Codes ist ein JSON-String (JavaScript® Object Notation). Sie können die folgenden Eigenschaften in einen gültigen QR-Code einfügen:
Immer erforderlich
Erforderlich, wenn auf dem Gerät noch kein DPC installiert ist
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
Empfohlen, wenn das Gerät nicht bereits mit einem WLAN verbunden ist
Optional
EXTRA_PROVISIONING_LOCALE
EXTRA_PROVISIONING_TIME_ZONE
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
EXTRA_PROVISIONING_LOCAL_TIME
EXTRA_PROVISIONING_WIFI_HIDDEN
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
EXTRA_PROVISIONING_WIFI_PROXY_HOST
EXTRA_PROVISIONING_WIFI_PROXY_PORT
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
EXTRA_PROVISIONING_WIFI_PAC_URL
EXTRA_PROVISIONING_SKIP_ENCRYPTION
In diesem Beispiel wird ein gültiger QR-Code erstellt:
{ "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.emm.android/com.emm.android.DeviceAdminReceiver", "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=", "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://path.to/dpc.apk", "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false, "android.app.extra.PROVISIONING_WIFI_SSID": "GuestNetwork", "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": { "dpc_company_name": "Acme Inc.", "emm_server_url": "https://server.emm.biz:8787", "another_custom_dpc_key": "dpc_custom_value" } }
Bereitstellung des QR-Codes
- Der Einrichtungsassistent wird sechsmal aufgefordert, auf den Willkommensbildschirm zu tippen. Die Fingertipps müssen an derselben Stelle auf dem Bildschirm vorgenommen werden.
- Der Einrichtungsassistent fordert den Nutzer auf, eine Internetverbindung herzustellen, damit der Einrichtungsassistent einen QR-Code-Reader herunterladen kann.
- Die Google Play-Dienste laden ein Modul herunter, das ein QR-Code-Erkennungssystem enthält.
- Der Nutzer scannt den QR-Code, den er von seinem IT-Administrator erhalten hat.
- Der Einrichtungsassistent lädt die DPC-App herunter und initiiert die Bereitstellung des Geräteeigentümers über
ACTION_PROVISION_MANAGED_DEVICE
.
Methode für Managed Play Store
Ein DPC kann die Bereitstellungsmethode für verwaltete Google Play-Konten verwenden, um den Modus „Geräteinhaber“ oder „Profilinhaber“ einzurichten. Diese Bereitstellungsmethode ist auf Organisationen ausgerichtet, die die G Suite derzeit nicht verwenden.
Die Bereitstellungsmethode für verwaltete Google Play-Konten verwendet die DPC-Supportbibliothek. Diese Clientbibliothek sorgt für den reibungslosen Betrieb von Managed Google Play-Konten. Er ist auch mit zukünftigen Updates für die Bereitstellung des Managed Play Store kompatibel.
Voraussetzungen für die Bereitstellung von Geräten
- Die Unternehmens-ID wird erstellt und mit einer EMM-Identität registriert und die ESA wird festgelegt, wie unter Enterprise erstellen und registrieren beschrieben.
- Die Unternehmensidentität des Nutzers ist Ihrer EMM-Konsole bekannt.
- Der Nutzer kann sich mit den von der EMM-Konsole akzeptierten Anmeldedaten (in der Regel geschäftliche E-Mail-Anmeldedaten) in der DPC-App anmelden.
Profilinhabermodus einrichten
Sie können den Betriebsmodus des Profilinhabers auf einem Gerät bereitstellen, das in einem BYOD-Szenario als persönliches Gerät verwendet wird.
- Der Nutzer lädt Ihren DPC manuell bei Google Play herunter und startet ihn.
- Der DPC stellt das Arbeitsprofil mithilfe von
ACTION_PROVISION_MANAGED_PROFILE
bereit. - Führen Sie die letzten Einrichtungsschritte aus.
Modus „Geräteeigentümer“ einrichten
Sie müssen den Betriebsmodus des Geräteinhabers bei der Ersteinrichtung eines neuen Geräts oder nach dem Zurücksetzen auf die Werkseinstellungen bereitstellen. Der Modus „Geräteinhaber“ kann auf einem Gerät nicht gleichzeitig bereitgestellt werden.
Während der Geräteeinrichtung gibt der Nutzer ein spezielles DPC-spezifisches Token ein, wenn er aufgefordert wird, ein Konto hinzuzufügen. Ein Token hat das Format „afw#DPC_IDENTIFIER“. Bei einem EMM-Anbieter namens „ACME“ würde „afw#acme“ den Standard-DPC von ACME EMM installieren. Jeder EMM-Anbieter muss eine bestimmte DPC-ID von Google anfordern, bevor er sie bei der Bereitstellung verwenden kann.
- Der Nutzer schaltet ein neues oder auf die Werkseinstellungen zurückgesetztes Gerät ein und der Einrichtungsassistent wird gestartet.
- Wenn der Nutzer aufgefordert wird, ein Konto hinzuzufügen, gibt er ein spezielles Token im Format „afw#DPC_IDENTIFIER“ ein, das den DPC für deinen EMM-Anbieter identifiziert.
- Mithilfe der DPC-ID im Token fügt der Einrichtungsassistent dem Gerät ein temporäres Google-Konto hinzu. Dieses temporäre Konto wird nur zum Herunterladen des DPC für Ihren EMM-Anbieter aus Google Play verwendet und in den letzten Einrichtungsschritten entfernt.
- Der DPC stellt das Gerät mit
ACTION_PROVISION_MANAGED_DEVICE
bereit. - Führen Sie die letzten Einrichtungsschritte aus.
Google-Kontomethode
Ein DPC kann die Bereitstellungsmethode für Google-Konten verwenden, um den Modus für Geräteinhaber, Profilinhaber oder Legacy-Modus einzurichten. Bei der Bereitstellungsmethode des Google-Kontos führt der DPC den Nutzer durch die Bereitstellungsschritte, nachdem er sein Google-Konto während der Ersteinrichtung des Geräts hinzugefügt hat.
Wenn ein Nutzer seine Google-Kontoanmeldedaten eingibt:
- Der Google-Authentifizierungsserver authentifiziert das Nutzerkonto.
- Der Authentifizierungsserver kommuniziert dann mit dem Unternehmensserver, um festzustellen, ob die Domain des Kontos entweder als G Suite-Domain oder eine vom EMM-Anbieter verwaltete Domain registriert ist.
- In diesem Fall lädt das System den mit der Domain verknüpften DPC von Google Play herunter und installiert ihn.
Profilinhabermodus einrichten
Sie können den Modus des Profilinhabers während der Ersteinrichtung eines Geräts oder beim Hinzufügen eines Kontos über Einstellungen > Konto hinzufügen bereitstellen.
- Die Kontoauthentifizierung wird von einem Nutzer im Einrichtungsassistenten oder unter Einstellungen > Konto hinzufügen gestartet.
GMSCore initiiert die Bereitstellung von Arbeitsprofilen mit
[PROVISION_FROM_TRUSTED_SOURCE]
.Der DPC wird automatisch auf das Gerät heruntergeladen und mit dem
ACTION_GET_PROVISIONING_MODE
-Handler gestartet, um zu prüfen, ob die Bereitstellung des Arbeitsprofils vom DPC unterstützt wird.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
: Zusätzliche Informationen für das Arbeitsprofil, z. B. die E-Mail-Adresse Außerdem erhält der DPC hier den „is_setup_wizard“. Dieses Bundle wird inACTION_GET_PROVISIONING_MODE
- undACTION_ADMIN_POLICY_COMPLIANCE
-Handler eingefügt.
EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
–Name des authentifizierten Kontos, das in das neue Arbeitsprofil migriert werden soll.Die Plattform führt die Bereitstellung von Arbeitsprofilen durch.
Wenn das Arbeitsprofil bereitgestellt wird, empfängt der DPC die Übertragung
ACTION_PROFILE_PROVISIONING_COMPLETE
. DerACTION_ADMIN_POLICY_COMPLIANCE
-Handler der DPC wird im Arbeitsprofil gestartet.
Nachdem das Arbeitsprofil erstellt wurde, wird der DPC auch im Arbeitsprofil ausgeführt. Der DPC überträgt Richtlinien für dieses verwaltete Google-Konto, stellt sicher, dass das Gerät nicht manipuliert ist, und überprüft, ob die Richtlinien durchgesetzt werden (z. B. ein Passwort verlangen).Der DPC im privaten Profil deaktiviert sich selbst oder der Nutzer entfernt ihn.

Modus „Geräteinhaber“ oder COPE einrichten
Sie müssen den Betriebsmodus des Geräteinhabers bei der Ersteinrichtung eines neuen Geräts oder nach dem Zurücksetzen auf die Werkseinstellungen bereitstellen. Der Modus „Geräteeigentümer“ kann einem Gerät nicht hinzugefügt werden.
- Die Kontoauthentifizierung wird von einem Nutzer im Einrichtungsassistenten gestartet.
- GMSCore initiiert die Bereitstellung des Geräteinhabers über
[PROVISION_FROM_TRUSTED\SOURCE]
. 3.Der DPC wird automatisch auf das Gerät heruntergeladen und über denGET_PROVISIONING_MODE
-Handler gestartet, um den gewünschten Bereitstellungsmodus auszuwählen.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
: Zusätzliche Informationen für das Arbeitsprofil, z. B. Sprache, WLAN oder E-Mail-Adresse Außerdem erhält der DPC hier den „is_setup_wizard“. Dieses Bundle wird inACTION_GET_PROVISIONING_MODE
- undACTION_ADMIN_POLICY_COMPLIANCE
-Handler eingefügt. - Die Plattform stellt das Gerät im gewünschten Bereitstellungsmodus bereit.
Wenn das Gerät bereitgestellt wird, empfängt der DPC diese Übertragungen und der
ACTION_ADMIN_POLICY_COMPLIANCE
-Handler des DPC wird gestartet:
ACTION_READY_FOR_USER_INITIALIZATION
ACTION_PROFILE_PROVISIONING_COMPLETE
.Auf dem DPC wird anhand des Werts
Global.DEVICE_PROVISIONED
geprüft, ob das Gerät neu oder auf die Werkseinstellungen zurückgesetzt wurde (nicht eingerichtet):
0: Nicht bereitgestellt.
1: Bereitgestellt.Der DPC schließt den Bereitstellungsprozess ab, indem er Richtlinien für das verwaltete Gerät überträgt, um sicherzustellen, dass das Gerät nicht manipuliert ist, und dass die Richtlinien durchgesetzt werden (z. B. ein Passwort erforderlich).

Alten Modus einrichten
Sie können den alten Betriebsmodus bei der Ersteinrichtung eines Geräts oder wenn der Nutzer ein Konto unter Einstellungen > Konto hinzufügen hinzufügt. Für den Zugriff auf den Managed Play Store müssen Nutzer folgende Voraussetzungen erfüllen:
- Das Google-Konto ist Teil einer verwalteten Google-Domain.
- Die verwaltete Google-Domain wird für Android mit einem EMM-Anbieter eingerichtet, der an die Google Play EMM API gebunden ist.
Wenn Sie die App-Verwaltung nur auf älteren Geräten nutzen möchten, benötigen Sie keinen DPC. In diesem Fall fügt der Nutzer unter Einstellungen > Konto hinzufügen sein Google-Konto hinzu. Die App-Verwaltung umfasst die Auswahl empfohlener Apps, die Bereitstellung privater Apps, den Kauf von Lizenzen und den Vertrieb dieser Apps.
Wenn Ihr DPC das Google-Konto hinzufügen soll:
- Der Nutzer lädt Ihren DPC von Google Play herunter und startet ihn.
- Der DPC fügt das verwaltete Google-Konto mit
AccountManager.addAccount()
hinzu. Eine Beispielimplementierung für das Hinzufügen eines bestimmten Google-Kontos mithilfe vonAccountManager.KEY_ACCOUNT_NAME
finden Sie unter TestDPC. - Optional: Der DPC legt sich selbst als Geräteadministrator fest. Als Geräteadministrator bietet der DPC neben der App-Verwaltung noch weitere Geräteverwaltungsfunktionen.
Hinweise zur Implementierung der Google-Kontomethode
Der DPC sollte den Authentifizierungsablauf des Google-Kontos erkennen, indem er im Start-Intent nach spezifischen Extras sucht (siehe
LaunchIntentUtil
):- Konto vom Typ
android.accounts.Account
: Gibt an, dass das Konto über den Einrichtungsassistenten oder über Einstellungen > Konto hinzufügen hinzugefügt wurde. Dies bedeutet, dass der gestartete DPC das Gerät oder Profil verwalten muss. is_setup_wizard
vom Typ „Boolesch“: Wenn der Wert auf „true“ gesetzt ist, wurde der DPC im Einrichtungsassistenten vor Abschluss des Einrichtungsassistenten gestartet, ansonsten unter Einstellungen > Konto hinzufügen oder einem anderen Ablauf.
Eine einfache Prüfung, ob der DPC als Teil der Methode des Google-Kontos gestartet wurde, ist:
- Konto vom Typ
boolean isSynchronousAuthLaunch(Intent launchIntent) { return launchIntent.hasExtra(“is_setup_wizard”); }
Der DPC sollte vor dem Abschluss der Einrichtung nicht
finish()
aufrufen. Außerdem sollte ein positiver Ergebniscode (z. B.RESULT_OK
) zurückgegeben werden, wenn der DPC mitstartActivityForResult()
gestartet wird und auf ein Ergebnis wartet.Der DPC sollte auf einen Ergebniscode aus dem Bereitstellungsprozess warten, bevor
finish()
aufgerufen wird, wenn der DPC-Einrichtungsablauf den Punkt zum Senden einesACTION_PROVISION_*
-Intents erreicht. Verwenden Sie die CallbacksstartActivityForResult()
undonActivityResult()
beim Starten vonACTION_PROVISION_*
-Intents. (Beispiele finden Sie unterLaunchActivity
undSetupSyncAuthManagement
.
)Aufgrund der möglicherweise asynchronen Einrichtung des Einrichtungsprozesses kann sich der DPC nicht auf den Ergebniscode
RESULT_OK
verlassen, um anzuzeigen, dass die Bereitstellung erfolgreich war. Die einzige Möglichkeit besteht darin, sich bei der Bereitstellung aufDeviceAdminReceiver
-Callbacks zu verlassen.RESULT_CANCELED
gibt an, dass der Nutzer in einem synchronen Teil des Einrichtungsvorgangs gesichert hat. Der DPC sollte darauf reagieren.In diesem Beispiel startet der DPC die Bereitstellung und wartet auf den Ergebniscode einer Aktivität:
Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE); startActivityForResult(intent, REQUEST_MANAGED_PROFILE);
...
@Override public void onActivityResult(int req, int res, Intent i) { if (req == REQUEST_MANAGED_PROFILE) { if (res == Activity.RESULT_OK) { setResult(Activity.RESULT_OK); finish(); } else { Toast.makeText(this, “Provisioning failed”, Toast.LENGTH_SHORT).show(); } } }
- Der DPC sollte nicht versuchen, den Modus „Geräteeigentümer“ einzurichten, wenn das Gerät bereits bereitgestellt ist (siehe
ProvisioningStateUtil.isDeviceProvisioned()
). In diesem Beispiel prüft der DPC, ob das Gerät bereitgestellt ist:
public static boolean isDeviceProvisioned(Context context) { ContentResolver cr = context.getContentResolver(); return Settings.Global.getInt(cr, DEVICE_PROVISIONED, 0) != 0; }
- Optional. Der DPC kann das
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
-Extra beim Starten der Nutzerverwaltung verwenden, um Statusinformationen an seinDeviceAdminReceiver
zurückzugeben(was im Fall des Profilinhabers im Arbeitsprofil ausgeführt wird). Test-DPC verwendet diesen zusätzlichen Wert, um nach Abschluss der Bereitstellung eine andere Gruppe von Aktivitäten im Ablauf des Google-Kontos einzugeben. Weitere Informationen finden Sie unterDeviceAdminReceiver
.
public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver { @Override public void onProfileProvisioningComplete(Context context, Intent intent) { // Retrieve the admin extras bundle, which we can use to determine the original context for // Test DPC’s launch. PersistableBundle extras = intent.getParcelableExtra( EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE); ...
- Zum Einrichten eines Arbeitsprofils muss der hinzugefügte DPC das hinzugefügte Konto in das neue Arbeitsprofil migrieren. Dazu muss der DPC das im Start-Intent für
ACTION_PROVISION_MANAGED_PROFILE
angegebene Konto übergeben. - Der DPC sollte dem Nutzer einen klaren Call-to-Action (z. B. eine Schaltfläche zum Beenden) anzeigen, um die App am Ende der Einrichtung zu beenden, damit der Nutzer nicht glaubt, dass er eine Sackgasse erreicht hat.
- Der DPC sollte das Design oder die Layoutbibliothek des Einrichtungsassistenten verwenden, damit die Nutzung reibungslos und gut funktioniert.
NFC-Methode
Ein DPC kann die NFC-Bereitstellungsmethode verwenden, um den Modus „Geräteinhaber“ einzurichten. In der NFC-Bereitstellungsmethode oder -Bump erstellen Sie eine NFC-Programmier-App, die die anfänglichen Richtlinien und WLAN-Konfigurationen, -Einstellungen und -Bereitstellungsdetails enthält, die Ihr Kunde zum Konfigurieren des Betriebsmodus des Geräteinhabers benötigt. Wenn du oder dein Kunde die NFC-Programmier-App auf einem Android-Gerät installiert, wird dieses Gerät zum Programmer-Gerät.
Um ein Gerät bereitzustellen, nimmt der IT-Administrator ein neues Gerät direkt mit dem Programmierer auf. Das Bump überträgt Konfigurationen auf das Gerät, damit es eine Verbindung zum Internet herstellt und die entsprechenden Richtlinien und Einstellungen herunterlädt. Das Gerät wird dann von Ihrem DPC verwaltet.
Nach der Bereitstellung eines Geräts wird Google Play für kurze Zeit nicht verwaltete Verbraucherinhalte anstelle der genehmigten Apps und Sammlungen, die angezeigt werden sollten, angezeigt. Diese Verzögerung kann wenige Minuten oder bis zu einer Stunde dauern.
NFC-Programmier-App und -Programmierer erstellen
- Laden Sie die Beispiel-App für NFC-Programmierer aus der EMM-Community auf Google Cloud Connect herunter. Sie können die Beispielanwendung unverändert übernehmen oder für Ihre Standardwerte ändern. Siehe Beispielcode unter Standardparameter.
- Installieren Sie die NFC-Programmier-App auf dem Gerät, das als Programmierer verwendet werden soll.
- Starten Sie die NFC-Programmier-App und wählen Sie Load Defaults (Standardeinstellungen laden) für com.example.android.apis aus. Dieser Text kann je nach den Standardparametern variieren.
Kundengerät bereitstellen
- Setze das Programmiergerät auf ein neues oder auf die Werkseinstellungen zurückgesetztes Gerät.
- Prüfen Sie, ob das Gerät auf dem Begrüßungsbildschirm angezeigt wird, der beim Start angezeigt wird. Der Text wird in der Programmier-App in
Ready to send:{...}
angegeben. - Warten Sie, während der DPC Folgendes ausführt:
- Verschlüsselt das Gerät.
- Wenn es sich um ein CDMA-Gerät (Code-Division Multiple Access) handelt, wird das Telefon aktiviert, während eine Telefoniebenutzeroberfläche angezeigt wird (keine Interaktion erforderlich).
- Richtet die WLAN-Verbindung ein.
- Lädt die APK-Datei für com.example.android.apis herunter.
- Installiert com.example.android.apis.
- Legt den Beispiel-Geräteadministrator in com.example.android.apis als Geräteeigentümer fest.
- Zeigt bei erfolgreicher Aktivierung des Geräteeigentümers einen Toast an.
- Nachdem du zur Startseite zurückgekehrt bist (der Einrichtungsassistent wird automatisch übersprungen), überprüfe, ob com.example.android.apis als Geräteinhaber festgelegt ist:
- Unter Einstellungen > Sicherheit > Geräteadministratoren darf die Option „Beispiel-Geräteadministrator“ nicht entfernt werden.
- Unter Einstellungen > Nutzer > Nutzer und Profile > Sie (Inhaber) darf der Inhaber nicht das einzige verfügbare Konto sein. Ein Gerät kann immer nur einen aktiven Geräteinhaber haben.
Codebeispiele aus der NFC-Programmier-App
Abschnitte der NFC-Programmier-App, die Sie besonders nützlich finden, enthalten Inline-Kommentare. Um den gesamten Beispielcode in der NFC-Programmier-App zu sehen, entpacken Sie die APK-Beispieldatei mit einem Java-Dekompilierprogramm.
initialPropertyUI()-Methode
Die Methode initializePropertyUI()
initialisiert Benutzeroberflächenelemente (bearbeitbare Textfelder und Kästchen) in der NFC-Programmieranwendung. Änderungen in diesen Elementen werden mit den Schlüssel/Wert-Paaren (KVPs) synchronisiert, die die Variable mProps
enthält. Die Variable mProps
wird schließlich bei einem NFC-Bump an ein Gerät gesendet.
private void initializePropertyUI(int paramInt1, int paramInt2, final String paramString) { Log.d("DeviceProvisioningProgrammerSample","initializeProperty for " + paramString); final EditText localEditText = (EditText)findViewById(paramInt1); final CheckBox localCheckBox =(CheckBox)findViewById(paramInt2); /* Here we initialize text boxes so that when their text is edited the changes are synced to mProps. */ if(localEditText != null) localEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable paramAnonymousEditable) { } public void beforeTextChanged(CharSequence paramAnonymousCharSequence, int paramAnonymousInt1, int paramAnonymousInt2, int paramAnonymousInt3) { } public void onTextChanged(CharSequence paramAnonymousCharSequence, int paramAnonymousInt1, int paramAnonymousInt2, in paramAnonymousInt3) { if ((localCheckBox != null) && (localCheckBox.isChecked())) { DeviceProvisioningProgrammerSample.this.mProps.put(paramString, localEditText.getText().toString()); DeviceProvisioningProgrammerSample.this.refreshMessageView(); } } }); /* Here we initialize check boxes, so that when they are unchecked, the edit boxes are disabled, and the corresponding KVPs are removed from mProps. When they are checked the KVPs are re added, and the text boxes are enabled. */ if (localCheckBox != null) localCheckBox.setOnCheckedChangeListener (new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton paramAnonymousCompoundButton, boolean paramAnonymousBoolean) { Log.d("DeviceProvisioningProgrammerSample", "onCheckedChanged for " + localEditText.getText().toString() + " isChecked = " + paramAnonymousBoolean); if (paramAnonymousBoolean) { localEditText.setEnabled(true); DeviceProvisioningProgrammerSample.this.mProps.put(paramString, localEditText.getText().toString()); DeviceProvisioningProgrammerSample.this.refreshMessageView(); return; } localEditText.setEnabled(false); DeviceProvisioningProgrammerSample.this.mProps.remove(paramString); DeviceProvisioningProgrammerSample.this.refreshMessageView(); } }); }
Standardparameter
In diesem Codebeispiel werden die Standardwerte festgelegt, die an ein Gerät per NFC gesendet werden. Einige konfigurierbare Parameter sind im Beispiel nicht enthalten, müssen aber möglicherweise in die Implementierung aufgenommen werden. Parameter, die nicht im Beispiel enthalten sind, finden Sie hier.
public void loadDefaults1(View paramView) { /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME */ ((EditText)findViewById(2131034114)).setText("com.example.android.apis"); ((CheckBox)findViewById(2131034113)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION */ ((EditText)findViewById(2131034116)).setText ("https://sites.google.com/site/apidemodownload/somepage/ApiDemos.apk"); ((CheckBox)findViewById(2131034115)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM (note: must be URL-safe)*/ ((EditText)findViewById(2131034118)).setText("ZYk5xsY0xqic51CTqB9kLiMLqwk"); ((CheckBox)findViewById(2131034117)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_WIFI_SSID */ ((EditText)findViewById(2131034120)).setText("\"GoogleGuest\""); ((CheckBox)findViewById(2131034119)).setChecked(true); /* This EditText holds the KVP for EXTRA_PROVISIONING_TIME_ZONE*/ ((EditText)findViewById(2131034122)).setText("Europe/London"); ((CheckBox)findViewById(2131034121)).setChecked(true); ((CheckBox)findViewById(2131034123)).setChecked(false); /* This EditText holds the KVP for EXTRA_PROVISIONING_LOCALE ((EditText)findViewById(2131034126)).setText("en_GB"); ((CheckBox)findViewById(2131034125)).setChecked(true); }
onCreate()-Methode
Die Methode onCreate()
initialisiert die NFC-Programmier-App und ihre Funktionen.
Die android.app.extra-Strings entsprechen den Strings, die in der DevicePolicyManager
-Dokumentation beschrieben werden. z. B. DevicePolicyManager.EXTRA_ PROVISIONING_WIFI_SSID ==
"android.app.extra.PROVISIONING_WIFI_SSID"
.
protected void onCreate(Bundle paramBundle) { Log.d("DeviceProvisioningProgrammerSample", "onCreate"); super.onCreate(paramBundle); setContentView(2130903040); this.mTextView = ((TextView)findViewById(2131034112)); this.mProps = new Properties(); initializePropertyUI(2131034114, 2131034113, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME"); initializePropertyUI(2131034116, 2131034115, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION"); initializePropertyUI(2131034118, 2131034117, "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM"); initializePropertyUI(2131034120, 2131034119, "android.app.extra.PROVISIONING_WIFI_SSID"); initializePropertyUI(2131034122, 2131034121, "android.app.extra.PROVISIONING_TIME_ZONE"); initializePropertyUI(2131034124, 2131034123, "android.app.extra.PROVISIONING_LOCAL_TIME"); initializePropertyUI(2131034126, 2131034125, "android.app.extra.PROVISIONING_LOCALE"); refreshMessageView(); /* Next we get the default NFC adapter for the Android device being used, and define CreateNdefMessageCallback() for that adapter, which is invoked when another NFC device capable of NDEF push (Android Beam) is within range. CreateNdefMessageCallback is an interface that has one abstract method that needs to be defined. That method, createNdefMessage, creates the message to be pushed. */ NfcAdapter.getDefaultAdapter(this).setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() { public NdefMessage createNdefMessage(NfcEvent paramAnonymousNfcEvent) { /* Here ndefMessage creates an output stream which contains the values from mProps. */ Log.d("DeviceProvisioningProgrammerSample", "Sending Nfc"); ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream(); try { DeviceProvisioningProgrammerSample.this.mProps.store(localByteArrayOutputStream, DeviceProvisioningProgrammerSample.this.getString(2130968578)); DeviceProvisioningProgrammerSample.this.mTextView.post(new Runnable() { public void run() { DeviceProvisioningProgrammerSample.this.refreshMessageView(); } }); /* Here NdefMessage is created containing an NdefRecord. The NdefRecord contains its record type, and a byte array derived from the mProps output stream. */ return new NdefMessage(new NdefRecord[] { NdefRecord.createMime("application/com.android.managedprovisioning", localByteArrayOutputStream.toByteArray()) }); } catch (IOException localIOException) { while (true) Log.e("DeviceProvisioningProgrammerSample", "io exception", localIOException); } } } , this, new Activity[0]); }
Weitere Informationen
Unter Erweiterte NFC werden erweiterte NFC-Themen beschrieben, z. B. das Arbeiten mit verschiedenen Tag-Technologien, das Schreiben in NFC-Tags und die Weiterleitung im Vordergrund.
Manuelle Methode zur DPC-Installation
Wenn Sie den Profilinhabermodus mithilfe der manuellen DPC-Installationsmethode einrichten möchten, lädt der Nutzer Ihren DPC von Google Play herunter und installiert ihn. Der DPC führt den Nutzer dann durch den Rest des Prozesses, um den Profilinhaber für das verwaltete Google-Konto einzurichten.
Der DPC kann das verwaltete Google-Konto vor oder nach dem Erstellen des Arbeitsprofils hinzufügen. Der DPC kann beispielsweise basierend auf den EMM-Anmeldedaten eines Nutzers ein Arbeitsprofil erstellen, anstatt zuerst das verwaltete Google-Konto aufzurufen.
Profilinhabermodus einrichten
Verwaltetes Google-Konto zuerst hinzufügen
- Der Nutzer lädt Ihre DPC von Google Play herunter und installiert sie.
- Der DPC fügt das verwaltete Google-Konto hinzu, bevor er das Arbeitsprofil mit
AccountManager.addAccount()
erstellt. - Der DPC wird im privaten Profil ausgeführt und initiiert den Vorgang zum Erstellen eines Arbeitsprofils mit:
ACTION_PROVISION_MANAGED_PROFILE
: Stellt das Arbeitsprofil bereit.
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
– Zusätzliche Informationen für das Arbeitsprofil, z. B. Sprache, WLAN, E-Mail-Adresse.
EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE
–Name des authentifizierten Kontos, das in das neue Arbeitsprofil migriert werden soll. - Der DPC im Arbeitsprofil schließt den Bereitstellungsprozess ab. Sobald das Arbeitsprofil erstellt wurde, wird der DPC auch im Arbeitsprofil ausgeführt. Der DPC im Arbeitsprofil schließt den Bereitstellungsprozess ab. Dabei sendet er Richtlinien für dieses verwaltete Google-Konto an, stellt sicher, dass sich das Gerät nicht in einem manipulierten Zustand befindet, und überprüft, ob die Richtlinien durchgesetzt werden (z. B. das Erfordern eines Passworts).
- Wenn das Arbeitsprofil bereitgestellt wird, empfängt der DPC die Übertragung
ACTION_PROFILE_PROVISIONING_COMPLETE
. - Der DPC im privaten Profil deaktiviert sich selbst oder der Nutzer entfernt ihn.

Erstelle zuerst das Arbeitsprofil.
- Der Nutzer lädt Ihre DPC von Google Play herunter und installiert sie.
- Der DPC wird im privaten Profil ausgeführt und initiiert den Vorgang zum Erstellen eines Arbeitsprofils mit:
ACTION_PROVISION_MANAGED_PROFILE
: Stellt das Arbeitsprofil bereit.
EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
– Zusätzliche Informationen zum Arbeitsprofil, z. B. Sprache, WLAN, E-Mail-Adresse. - Der DPC fügt das verwaltete Google-Konto mit
AccountManager.addAccount()
hinzu. - Der DPC empfängt die Übertragung
ACTION_PROFILE_PROVISIONING_COMPLETE
und liestEXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE
. - Der DPC im Arbeitsprofil schließt den Bereitstellungsprozess ab. Sobald das Arbeitsprofil erstellt wurde, wird der DPC auch im Arbeitsprofil ausgeführt. Der DPC im Arbeitsprofil schließt den Bereitstellungsprozess ab. Dabei sendet er Richtlinien für dieses verwaltete Google-Konto an, stellt sicher, dass sich das Gerät nicht in einem manipulierten Zustand befindet, und überprüft, ob die Richtlinien durchgesetzt werden (z. B. das Erfordern eines Passworts).
- Der DPC aktiviert das Arbeitsprofil mit
DevicePolicyManager.setProfileEnabled()
. - Der DPC im privaten Profil deaktiviert sich selbst oder der Nutzer entfernt ihn.

Alten Modus einrichten
Sie können den alten Betriebsmodus bei der Ersteinrichtung eines Geräts oder wenn der Nutzer ein Konto unter Einstellungen > Konto hinzufügen hinzufügt. Für den Zugriff auf den Managed Play Store müssen Nutzer folgende Voraussetzungen erfüllen:
- Das Google-Konto ist Teil einer verwalteten Google-Domain.
- Die verwaltete Google-Domain wird für Android im Unternehmen mit einem EMM-Anbieter eingerichtet, der an die Google Play EMM API gebunden ist.
Wenn Sie die App-Verwaltung nur auf älteren Geräten nutzen möchten, benötigen Sie keinen DPC. In diesem Fall fügt der Nutzer unter Einstellungen > Konto hinzufügen sein Google-Konto hinzu. Die App-Verwaltung umfasst die Auswahl empfohlener Apps, die Bereitstellung privater Apps, den Kauf von Lizenzen und den Vertrieb dieser Apps.
Wenn Ihr DPC das Google-Konto hinzufügen soll:
- Der Nutzer lädt Ihren DPC von Google Play herunter und startet ihn.
- Der DPC fügt das verwaltete Google-Konto mit
AccountManager.addAccount()
hinzu. Eine Beispielimplementierung für das Hinzufügen eines bestimmten Google-Kontos mithilfe vonAccountManager.KEY_ACCOUNT_NAME
finden Sie unter TestDPC. - Optional: Der DPC legt sich selbst als Geräteadministrator fest. Als Geräteadministrator bietet der DPC neben der App-Verwaltung noch weitere Geräteverwaltungsfunktionen.