Device Policy Controller erstellen

In diesem Leitfaden wird die Entwicklung eines Device Policy Controller (DPC) für in einer Android Enterprise-Bereitstellung. Eine zuvor bekannte DPC-App als Work Policy Controller für lokale Geräterichtlinien und Systeme Apps auf Geräten.

<ph type="x-smartling-placeholder">

DPCs

Bei der Android Enterprise-Bereitstellung hat ein Unternehmen die Kontrolle verschiedene Aspekte von Nutzergeräten, z. B. das Isolieren arbeitsbezogener den Informationen der Nutzer personenbezogenen Daten, Vorkonfiguration genehmigter Apps für in der Umgebung arbeiten oder Gerätefunktionen (z. B. die Kamera) deaktivieren.

Als EMM entwickeln Sie eine DPC-App, die von Ihren Kunden in in Verbindung mit der EMM-Konsole und Server. Ihr Kunde stellt den DPC auf den Nutzergeräten bereit, die er verwaltet. Der DPC fungiert als Brücke zwischen Ihrer EMM-Konsole (und Ihrem Server) und dem Gerät. Ein Administrator verwendet die EMM-Konsole, um eine Reihe von Aufgaben auszuführen, darunter Geräteeinstellungen und Apps konfigurieren.

Der DPC erstellt und verwaltet das Arbeitsprofil auf dem Gerät, auf dem es installiert ist. Im Arbeitsprofil werden arbeitsbezogene Daten verschlüsselt und von des Nutzers private Apps und Daten. Vor dem Erstellen des Arbeitsprofils kann der DPC außerdem Sie müssen ein Managed Google Play-Konto für die Nutzung auf dem Gerät bereitstellen.

In diesem Leitfaden erfahren Sie, wie Sie einen DPC entwickeln, mit dem Arbeitsprofile erstellt und verwaltet werden können.

DPC-Supportbibliothek für EMMs

Die DPC-Supportbibliothek für EMMs umfasst Dienstprogramm- und Hilfsklassen, die Erleichterung der Bereitstellung und Verwaltung von Android-Geräten in einem Unternehmen zu verbessern. Mit der Bibliothek können Sie wichtige Funktionen in Ihrem DPC-Apps:

  • Unterstützung bei der Bereitstellung von Managed Google Play-Konten: Bereitstellung verwaltet Für Google Play-Konten der DPC App müssen Google Play und Google Die Apps der Play-Dienste erfüllen die Mindestversionsanforderungen. Wenn Sie diese Apps können komplex sein. Die DPC-Supportbibliothek aktualisiert diese und die Kompatibilität mit zukünftigen Updates der verwalteten Google- Bereitstellungsprozess für Play-Konten Siehe Managed Google Play-Konten .
  • Unterstützung für verwaltete Konfigurationen: Die Verwendung der Play EMM API zur Verarbeitung verwalteter Konfigurationen für genehmigte Apps die einfachste Möglichkeit, verwaltete Konfigurationen auf Ihrem DPC zu implementieren. DPC-Support Über die Bibliothek können Sie die Aufgabe, verwaltete Konfigurationen (früher „App-Einschränkungen“), die der Administrator mithilfe Ihres EMM festgelegt hat . Die Verwendung der Play EMM API zur Verwaltung verwalteter Konfigurationen ermöglicht Die App-Konfiguration, die während der Installation atomar angewendet wird. Weitere Informationen finden Sie unter Verwaltete Konfigurationen anwenden finden Sie weitere Informationen dazu, wie Sie diese Funktion Ihren DPC.

So lädst du die Bibliothek herunter: In diesem Leitfaden beschriebene Aufgaben gehen davon aus, dass die DPC-Supportbibliothek verwendet wird.

DPC-Supportbibliothek herunterladen

Wenn Sie die DPC-Supportbibliothek verwenden möchten, laden Sie sie aus der Community von EMM-Anbietern für Android Enterprise herunter. Sie müssen die Bibliothek zu Ihrer build.gradle-Datei hinzufügen und sich um andere Abhängigkeiten festlegen, wenn Sie Ihre DPC-App erstellen. Die Bibliothek erfordert beispielsweise 11.4.0 <ph type="x-smartling-placeholder"></ph> Authentifizierungs-Clientbibliothek der Google Play-Dienste.

  1. Fügen Sie die Bibliothek der Datei build.gradle hinzu:

    Cool

    implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
    

    Kotlin

    implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
    
  2. 11.4.0 hinzufügen Google Play-Dienste-Authentifizierungs-Clientbibliothek in die build.gradle-Datei ein:

    Cool

    implementation 'com.google.android.gms:play-services-auth:11.4.0'
    

    Kotlin

    implementation("com.google.android.gms:play-services-auth:11.4.0")
    
<ph type="x-smartling-placeholder">

Zum Ausführen der Bibliothek sind bestimmte Berechtigungen erforderlich, daher müssen Sie diese das Manifest Ihrer DPC-App beim Hochladen in Google Play:

  <uses-permission android:name=
      "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
  <uses-permission android:name=
      "android.permission.GET_ACCOUNTS"/>
  <uses-permission android:name=
      "android.permission.MANAGE_ACCOUNTS"/>
  <uses-permission android:name=
      "android.permission.WRITE_SYNC_SETTINGS"/>
  <uses-permission android:name=
      "com.google.android.providers.gsf.permission.READ_GSERVICES"/>

Zusätzlich zu diesen vorbereitenden Schritten zur Einrichtung und Bereitstellung die spezifische Bibliotheksfunktion in Ihrem DPC-Code initialisieren, die Sie implementieren möchten. Einzelheiten finden Sie in den entsprechenden weiter unten.

DPC erstellen

Erstellen Sie Ihren DPC auf dem vorhandenen Modell, das für Geräteverwaltungsanwendungen verwendet wird. Konkret muss Ihre App die abgeleitete Klasse DeviceAdminReceiver (eine Klasse aus der android.app.admin-Klasse) sein. Paket enthält, wie in den <ph type="x-smartling-placeholder"></ph> Geräteverwaltung.

Arbeitsprofil erstellen

Ein Beispiel, das zeigt, wie Sie ein einfaches Arbeitsprofil erstellen, finden Sie unter <ph type="x-smartling-placeholder"></ph> BasicManagedProfile auf GitHub.

So erstellen Sie ein Arbeitsprofil auf einem Gerät, auf dem bereits ein privates Profil vorhanden ist: prüfen Sie zuerst, ob das Gerät ein Arbeitsprofil unterstützt, indem Sie Existenz des Systemfunktion von FEATURE_MANAGED_USERS:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
    // This device does not support work profiles!
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) {
    // This device does not support work profiles!
}

Wenn das Gerät Arbeitsprofile unterstützt, kannst du ein Arbeitsprofil erstellen, indem du einen Intent sendest mit einem ACTION_PROVISION_MANAGED_PROFILE Aktion ausführen. In manchen Fällen ist verwaltetes Profil ein allgemeiner Begriff, der dasselbe wie Arbeitsprofil bedeutet im Kontext von Android in Unternehmen.) Paketnamen des Geräteadministrators angeben als Zusatzangebot:

Kotlin

val provisioningActivity = getActivity()

// You'll need the package name for the DPC app.
val myDPCPackageName = "com.example.myDPCApp"

// Set up the provisioning intent
val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java)
provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString())
if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) {
    // No handler for intent! Can't provision this device.
    // Show an error message and cancel.
} else {
    // REQUEST_PROVISION_MANAGED_PROFILE is defined
    // to be a suitable request code
    startActivityForResult(provisioningIntent,
            REQUEST_PROVISION_MANAGED_PROFILE)
    provisioningActivity.finish()
}

Java

Activity provisioningActivity = getActivity();
// You'll need the package name for the DPC app.
String myDPCPackageName = "com.example.myDPCApp";
// Set up the provisioning intent
Intent provisioningIntent =
        new Intent("android.app.action.PROVISION_MANAGED_PROFILE");
ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class);
provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString());
if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager())
         == null) {
    // No handler for intent! Can't provision this device.
    // Show an error message and cancel.
} else {
    // REQUEST_PROVISION_MANAGED_PROFILE is defined
    // to be a suitable request code
    startActivityForResult(provisioningIntent,
            REQUEST_PROVISION_MANAGED_PROFILE);
    provisioningActivity.finish();
}

Das System reagiert auf diesen Intent folgendermaßen:

  • Überprüft, ob das Gerät verschlüsselt ist. Ist dies nicht der Fall, werden Sie vom System gefragt, muss der Nutzer das Gerät verschlüsseln, bevor Sie fortfahren.
  • Ein Arbeitsprofil wird erstellt.
  • Entfernt nicht benötigte Anwendungen aus dem Arbeitsprofil.
  • Die DPC-App wird in das Arbeitsprofil kopiert und der DPC selbst wird als festgelegt: den Profilinhaber.

onActivityResult() überschreiben auf Prüfen Sie, ob die Bereitstellung erfolgreich war:

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    // Check if this is the result of the provisioning activity
    if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
        // If provisioning was successful, the result code is
        // Activity.RESULT_OK
        if (resultCode == Activity.RESULT_OK) {
            // Work profile created and provisioned.
        } else {
            // Provisioning failed.
        }
        return
    } else {
        // This is the result of some other activity. Call the superclass.
        super.onActivityResult(requestCode, resultCode, data)
    }
}

Java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check if this is the result of the provisioning activity
    if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) {
        // If provisioning was successful, the result code is
        // Activity.RESULT_OK
        if (resultCode == Activity.RESULT_OK) {
            // Work profile created and provisioned.
        } else {
            // Provisioning failed.
        }
        return;
    } else {
        // This is the result of some other activity. Call the superclass.
        super.onActivityResult(requestCode, resultCode, data);
    }
}

Aktivierung des Arbeitsprofils abschließen

Wenn das Profil bereitgestellt wurde, ruft das System den DPC auf mit der Methode DeviceAdminReceiver.onProfileProvisioningComplete() der App. Überschreiben Callback-Methode an, um die Aktivierung des Arbeitsprofils abzuschließen.

Ein typischer DeviceAdminReceiver.onProfileProvisioningComplete() Callback-Implementierung führt folgende Schritte aus:

Arbeitsprofil aktivieren

Nachdem Sie diese Aufgaben ausgeführt haben, rufen Sie die setProfileEnabled()-Methode zur Aktivierung des Arbeitsprofils:

Kotlin

// Get the device policy manager
val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val componentName = myDeviceAdminReceiver.getComponentName(this)
// Set the name for the newly created work profile.
myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile")
// ...and enable the profile
myDevicePolicyMgr.setProfileEnabled(componentName)

Java

// Get the device policy manager
DevicePolicyManager myDevicePolicyMgr =
        (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName componentName = myDeviceAdminReceiver.getComponentName(this);
// Set the name for the newly created work profile.
myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile");
// ...and enable the profile
myDevicePolicyMgr.setProfileEnabled(componentName);

Geräterichtlinien einrichten

Die DPC-App wendet die von einem Administrator festgelegten Geräterichtlinien an, Anforderungen und Beschränkungen des Unternehmens. Beispielsweise kann eine Sicherheitsrichtlinie müssen Geräte nach einer bestimmten Anzahl fehlgeschlagener Passworteingaben gesperrt werden. Der DPC fragt die aktuellen Richtlinien in der EMM-Konsole ab und wendet dann die Richtlinien an. über das Gerät Administration API verwalten.

Informationen zum Anwenden von Geräterichtlinien finden Sie unter <ph type="x-smartling-placeholder"></ph> Richtlinien:

Verwaltete Konfigurationen anwenden zu geschäftlichen Apps

Mit verwalteten Konfigurationen können Sie Ihren Kunden Folgendes ermöglichen: die genehmigten Apps vorzukonfigurieren und diese zu aktualisieren, lassen sich leicht einrichten, wenn die Konfiguration geändert werden muss. Konfigurieren einer App vor dem dass die Sicherheits- und sonstigen Richtlinien des Unternehmens eingehalten werden. bei der Installation der App auf dem Zielgerät.

Die App-Funktionen werden vom App-Entwickler in einem XML-Schema definiert (die Schema für verwaltete Konfigurationen), das die App beim Hochladen auf Google begleitet. Play (App-Entwickler finden weitere Informationen unter Verwaltete Konfigurationen einrichten)

Sie rufen dieses Schema aus der App ab, um es Ihren Kundenadministratoren anzuzeigen in Ihrer EMM-Konsole stellen Sie eine Benutzeroberfläche bereit, auf der die verschiedenen Optionen, die in der Schemaanzeige und ermöglichen es Administratoren, die App-Einstellungen vorzukonfigurieren. Die resultierende verwaltete Konfiguration, die vom Administrator festgelegt wurde, die auf dem EMM-Server gespeichert sind, Zum Festlegen der EMM API spielen Verwaltete Konfigurationen für Geräte oder Managedconfigurationsforuser. Weitere Informationen finden Sie unter Verwaltete Konfigurationen über Google Play.

Verwaltete Konfigurationen können mithilfe der Play EMM API auf die App angewendet werden (empfohlen) oder direkt über den DPC (siehe Verwaltete Konfigurationen anwenden) direkt über den DPC). Über die Play EMM API hat mehrere Vorteile, einschließlich einer einfachen Implementierung, da Sie das DPC-Supportbibliothek zur Vereinfachung von DPC-Aufgaben Außerdem bietet die Play EMM API Folgendes:

  • Legt die Konfiguration bei der Installation einer neuen App in kleinstmöglichen Schritten fest. Dadurch wird sichergestellt, dass die App bereit ist, wenn der Nutzer sie zum ersten Mal startet.
  • Damit können Sie Konfigurationen auf Nutzerbasis verwalten, sodass Sie die Bereitstellung nicht für jedes Gerät einzeln überwachen müssen.

Wenden Sie verwaltete Konfigurationen mithilfe der Play EMM API

Damit Sie die Play EMM API für verwaltete Konfigurationen verwenden können, muss der DPC Folgendes zulassen: Google Play, um Konfigurationen festzulegen. Die DPC-Supportbibliothek kümmert sich darum die von Google Play gesendete Konfiguration über einen Proxy weitergeleitet wird.

So verwenden Sie die Google Play- EMM API – laden Sie die DPC-Supportbibliothek herunter. und aktivieren Sie dann die Unterstützung verwalteter Konfigurationen in Ihrem DPC.

Unterstützung für verwaltete Konfigurationen aktivieren in Ihrem DPC

Importieren Sie diese Klasse in Ihren DPC:

com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport

Initialisieren Sie die Bibliothek für verwaltete Konfigurationen. In diesem Beispiel: „admin“ ist „ComponentName“ für DeviceAdminReceiver festlegen

Kotlin

var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)

Java

ManagedConfigurationsSupport managedConfigurationsSupport =
    new ManagedConfigurationsSupport(context, admin);

Aktivieren Sie verwaltete Konfigurationen:

Kotlin

managedConfigurationsSupport.enableManagedConfigurations()

Java

managedConfigurationsSupport.enableManagedConfigurations();

Wenn diese Bibliothek in Ihrem DPC initialisiert wurde, können Sie den Die Google Play EMM API in Ihrem EMM Konsole und Server, um verwaltete Konfigurationen auf genehmigte Apps anzuwenden, Codierung dieser Aufgaben direkt im DPC. Weitere Informationen finden Sie unter <ph type="x-smartling-placeholder"></ph> Verwaltete Konfigurationen über Google Play.

Verwaltete Konfigurationen anwenden direkt über den DPC,

Um die Konfigurationseinstellungen einer App direkt über den DPC zu ändern, rufen Sie die Methode DevicePolicyManager.setApplicationRestrictions() und übergeben Parameter für die DPC-App DeviceAdminReceiver, der Paketname der Ziel-App, und das Bundle enthält der vom Administrator festgelegten verwalteten Konfiguration der App. Weitere Informationen finden Sie unter Wie Ihre DPC und die EMM-Konsole interagieren und finden Sie weitere Informationen unter Verwaltete Konfigurationen einrichten. Sie können jedoch dass dieser alternative Ansatz zur Anwendung von verwalteten Konfigurationen werden für Bereitstellungen von Managed Google Play-Konten nicht empfohlen.

Bereitstellung von Managed Google Play-Konten Support

Die DPC-Supportbibliothek umfasst Support für die Bereitstellung Managed Google Play-Konten. Um diese Unterstützung nutzen zu können, müssen Sie zuerst die Methode und Sie können dann sicherstellen, Arbeitsumgebung und Fügen Sie ein Managed Google Play-Konto

Managed Google Play-Konten initialisieren in Ihrem DPC,

Importieren Sie diese Klasse in Ihren DPC:

com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport

Initialisieren Sie die Bereitstellungskompatibilitätsbibliothek. In diesem Beispiel ist „admin“ der ComponentName von DeviceAdminReceiver.

Kotlin

var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)

Java

AndroidForWorkAccountSupport androidForWorkAccountSupport =
    new AndroidForWorkAccountSupport(context, admin);

Sorgen Sie dafür, dass die Arbeitsumgebung Managed Google Play-Konten

Nachdem der DPC ein Gerät im Profilinhabermodus (ACTION_PROVISION_MANAGED_PROFILE) oder ein Gerät bereitgestellt hat Eigentümermodus (ACTION_PROVISION_MANAGED_DEVICE) aktivieren, prüfen Sie, ob das Gerät Managed Google Play-Konten unterstützt. Rufen Sie dazu Folgendes auf:

Kotlin

androidForWorkAccountSupport.ensureWorkingEnvironment(callback)

Java

androidForWorkAccountSupport.ensureWorkingEnvironment(callback);

Der Callback meldet den Erfolg oder Misserfolg dieses Prozesses. Wenn der Rückruf zurückgegeben wird, kann ein Managed Google Play-Konto hinzugefügt werden. Wenn meldet der Rückruf einen Fehler, fordern Sie den Nutzer dazu auf, Gerät eine Netzwerkverbindung hat, z. B. wenn der Download fehlschlägt. In anderen den Fehler an Google melden.

Kotlin

object : WorkingEnvironmentCallback() {
    override fun onSuccess() {
        // Can now provision the managed Google Play Account
    }
    override fun onFailure(error: Error) {
        // Notify user, handle error (check network connection)
    }
}

Java

new WorkingEnvironmentCallback() {
    @Override
    public void onSuccess() {
        // Can now provision the managed Google Play Account
    }

    @Override
    public void onFailure(Error error) {
        // Notify user, handle error (check network connection)
    }
}

Managed Google Play-Konto hinzufügen

AccountManager des Android-Frameworks können einem Gerät ein Managed Google Play-Konto hinzufügen. Um die Interaktion mit AccountManager, verwenden Sie die Hilfsfunktion (im Beispiel unten gezeigt). in der DPC-Supportbibliothek. Die Funktion verarbeitet das vom Google Play-Server zurückgegebene Token und erleichtert die Bereitstellung dem Managed Google Play-Konto. Die Funktion wird zurückgegeben, wenn der Managed Play Store Konto hat einen gültigen Status:

Kotlin

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)

Java

androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
  • token: Das vom Google generierte Nutzerauthentifizierungstoken Users.generateAuthenticationToken()-Aufruf der EMM API wiedergeben.
  • accountAddedCallback: Gibt das Managed Google Play-Konto zurück die dem Gerät hinzugefügt wurde. Dieser Callback sollte Folgendes enthalten: onAccountReady()- und onFailure()-Methoden.

Kotlin

val workAccountAddedCallback = object : WorkAccountAddedCallback() {
    override fun onAccountReady(account: Account, deviceHint: String) {
        // Device account was successfully added to the device
        // and is ready to be used.
    }

    override fun onFailure(error: Error) {
        // The account was not successfully added. Check that the token
        // provided was valid (it expires after a certain period of time).
    }
}

Java

WorkAccountAddedCallback workAccountAddedCallback =
    new WorkAccountAddedCallback() {
        @Override
        public void onAccountReady(Account account, String deviceHint) {
            // Device account was successfully added to the device
            // and is ready to be used.
        }

        @Override
        public void onFailure(Error error) {
            // The account was not successfully added. Check that the token
            // provided was valid (it expires after a certain period of time).
        }
};
  • Weitere Informationen zur Device Administration API finden Sie unter Gerät Verwaltung.
  • Informationen zu den Bereitstellungsmethoden für Android Enterprise finden Sie unter Bereitstellung von Geräten in der Entwicklerleitfaden für Android Enterprise.
  • In einem GitHub-Beispiel, das zeigt, wie ein einfaches Arbeitsprofil erstellt wird, Siehe BasicManagedProfile.
  • Für ein GitHub-Beispiel, das zeigt, wie Konfigurationen in anderen Anwendungen als Profilinhaber finden Sie unter AppRestrictionEnforcer.