In diesem Entwicklerhandbuch wird erläutert, wie Sie mit Ihrem Device Policy Controller (DPC) mehrere Android-Nutzer auf dedizierten Geräten verwalten
Übersicht
Mit Ihrem DPC können mehrere Personen ein einzelnes zweckbestimmtes Gerät gemeinsam nutzen. Ihr DPC auf einem vollständig verwalteten Gerät ausführen, können zwei Arten von Nutzern erstellt und verwaltet werden:
- Sekundärnutzer sind Android-Nutzer mit unterschiedlichen gespeicherten Apps und Daten. zwischen den Sitzungen. Sie verwalten den Nutzer mit einer Administratorkomponente. Diese Nutzer sind nützlich für Fälle, in denen ein Gerät zu Beginn einer Schicht aufgenommen wird, z. B. mitarbeitenden im Lieferfahrdienst oder Sicherheitspersonal.
- Sitzungsspezifische Nutzer sind sekundäre Nutzer, die vom System gelöscht werden, wenn der Nutzer stoppt, schaltet sich aus oder das Gerät startet neu. Diese Nutzenden sind nützlich für Fälle, in denen Daten nach Abschluss der Sitzung gelöscht werden können, z. B. der öffentliche Zugriff Internet-Kioske.
Sie verwenden Ihren vorhandenen DPC, um das zweckbestimmte Gerät und das sekundäre zu verwalten. Nutzenden. Eine Administratorkomponente in Ihrem DPC legt sich als Administrator für einen neuen sekundären Dienst fest. wenn Sie sie erstellen.
<ph type="x-smartling-placeholder">Administratoren eines sekundären Nutzers müssen demselben Paket angehören wie der Administrator des ein vollständig verwaltetes Gerät. Wir empfehlen, einen Administrator freizugeben, um die Entwicklung zu vereinfachen zwischen dem Gerät und den sekundären Nutzern.
Die Verwaltung mehrerer Nutzer auf dedizierten Geräten erfordert normalerweise Android 9.0, Einige der Methoden, die in diesem Entwickler-Leitfaden verwendet werden, finden Sie jedoch früheren Android-Versionen.
Sekundäre Nutzer
Sekundäre Nutzer können eine WLAN-Verbindung herstellen und neue Netzwerke konfigurieren. Sie können keine Netzwerke bearbeiten oder löschen, auch nicht die von ihnen erstellten Netzwerke.
Nutzer erstellen
Ihr DPC kann im Hintergrund zusätzliche Nutzer erstellen und dann zwischen ihnen wechseln in den Vordergrund. Der Prozess ist für sekundäre und flüchtigen Nutzern. Implementieren Sie die folgenden Schritte in den Administratoren des Verwaltetes Gerät und sekundärer Nutzer:
- Rufen Sie
DevicePolicyManager.createAndManageUser()
auf. Um einen flüchtigen Nutzer zu erstellen, fügen SieMAKE_USER_EPHEMERAL
im Flags-Argument. - Anruf
DevicePolicyManager.startUserInBackground()
bis den Nutzer im Hintergrund zu starten. Der Nutzer wird ausgeführt, aber Sie möchten um die Einrichtung abzuschließen, bevor der Nutzer in den Vordergrund gebracht wird die Person, die das Gerät verwendet. - Rufen Sie im Administrator des sekundären Nutzers
DevicePolicyManager.setAffiliationIds()
bis den neuen Nutzer mit dem primären Nutzer zu verknüpfen. Weitere Informationen finden Sie unter DPC-Koordination weiter unten. - Rufen Sie im Administratorbereich des vollständig verwalteten Geräts
DevicePolicyManager.switchUser()
, um den Nutzer zu wechseln im Vordergrund.
Das folgende Beispiel zeigt, wie Sie Schritt 1 zu Ihrem DPC hinzufügen können:
Kotlin
val dpm = getContext().getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager // If possible, reuse an existing affiliation ID across the // primary user and (later) the ephemeral user. val identifiers = dpm.getAffiliationIds(adminName) if (identifiers.isEmpty()) { identifiers.add(UUID.randomUUID().toString()) dpm.setAffiliationIds(adminName, identifiers) } // Pass an affiliation ID to the ephemeral user in the admin extras. val adminExtras = PersistableBundle() adminExtras.putString(AFFILIATION_ID_KEY, identifiers.first()) // Include any other config for the new user here ... // Create the ephemeral user, using this component as the admin. try { val ephemeralUser = dpm.createAndManageUser( adminName, "tmp_user", adminName, adminExtras, DevicePolicyManager.MAKE_USER_EPHEMERAL or DevicePolicyManager.SKIP_SETUP_WIZARD) } catch (e: UserManager.UserOperationException) { if (e.userOperationResult == UserManager.USER_OPERATION_ERROR_MAX_USERS) { // Find a way to free up users... } }
Java
DevicePolicyManager dpm = (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE); // If possible, reuse an existing affiliation ID across the // primary user and (later) the ephemeral user. Set<String> identifiers = dpm.getAffiliationIds(adminName); if (identifiers.isEmpty()) { identifiers.add(UUID.randomUUID().toString()); dpm.setAffiliationIds(adminName, identifiers); } // Pass an affiliation ID to the ephemeral user in the admin extras. PersistableBundle adminExtras = new PersistableBundle(); adminExtras.putString(AFFILIATION_ID_KEY, identifiers.iterator().next()); // Include any other config for the new user here ... // Create the ephemeral user, using this component as the admin. try { UserHandle ephemeralUser = dpm.createAndManageUser( adminName, "tmp_user", adminName, adminExtras, DevicePolicyManager.MAKE_USER_EPHEMERAL | DevicePolicyManager.SKIP_SETUP_WIZARD); } catch (UserManager.UserOperationException e) { if (e.getUserOperationResult() == UserManager.USER_OPERATION_ERROR_MAX_USERS) { // Find a way to free up users... } }
Wenn Sie einen neuen Nutzer erstellen oder starten, können Sie die Ursache auf Fehler prüfen.
indem Sie die Ausnahme UserOperationException
abfangen und den Aufruf
getUserOperationResult()
Überschreitung der Nutzeranzahl
Limits sind häufige Gründe für Fehler:
Das Erstellen eines Nutzers kann einige Zeit dauern. Wenn Sie häufig Nutzer erstellen, können Sie die User Experience verbessern, indem ein einsatzbereiter Nutzer im Hintergrund vorbereitet wird. Unter Umständen müssen Sie die Vorteile eines einsatzbereiten Nutzers mit dem maximalen Anzahl der auf einem Gerät zulässigen Nutzer
Identifizierung
Nachdem Sie einen neuen Nutzer erstellt haben, sollten Sie mit einer dauerhaften Seriennummer auf ihn verweisen.
Nummer. Speichern Sie die UserHandle
nicht dauerhaft, da sie vom System bei Bedarf wiederverwendet werden.
Nutzer zu erstellen und zu löschen. Erfahre die Seriennummer telefonisch unter
UserManager.getSerialNumberForUser()
:
Kotlin
// After calling createAndManageUser() use a device-unique serial number // (that isn’t recycled) to identify the new user. secondaryUser?.let { val userManager = getContext().getSystemService(UserManager::class.java) val ephemeralUserId = userManager!!.getSerialNumberForUser(it) // Save the serial number to storage ... }
Java
// After calling createAndManageUser() use a device-unique serial number // (that isn’t recycled) to identify the new user. if (secondaryUser != null) { UserManager userManager = getContext().getSystemService(UserManager.class); long ephemeralUserId = userManager.getSerialNumberForUser(secondaryUser); // Save the serial number to storage ... }
Nutzerkonfiguration
Je nach den Anforderungen Ihrer Nutzer können Sie die Einrichtung sekundärer
Nutzenden. Beim Aufrufen von createAndManageUser()
können Sie die folgenden Flags angeben:
SKIP_SETUP_WIZARD
- Überspringt die Ausführung des Einrichtungsassistenten für neue Nutzer, der nach Updates sucht und diese installiert, fordert den Nutzer auf, zusammen mit den Google-Diensten ein Google-Konto hinzuzufügen, und legt fest, eine Displaysperre. Das kann einige Zeit dauern und gilt möglicherweise nicht für alle z. B. an öffentlichen Internetterminals.
LEAVE_ALL_SYSTEM_APPS_ENABLED
- Alle System-Apps bleiben im neuen Nutzer aktiviert. Wenn Sie dieses Flag nicht festlegen, enthält der neue Nutzer nur die minimale Anzahl von Apps, die das Smartphone benötigt, - in der Regel ein Dateibrowser, Telefonwahl, Kontakte und SMS-Nachrichten.
Den Nutzerlebenszyklus verfolgen
Wenn es sich bei Ihrem DPC um einen Administrator des vollständig verwalteten Geräts handelt, kann es hilfreich sein,
wissen, wann sekundäre Nutzer wechseln. Wenn Sie Folgeaufgaben nach Änderungen ausführen möchten, überschreiben Sie
diese Callback-Methoden in der DeviceAdminReceiver
-Unterklasse Ihres DPC:
onUserStarted()
- Wird aufgerufen, nachdem das System einen Nutzer gestartet hat. Dieser Nutzer ist möglicherweise noch
im Hintergrund laufen. Du kannst den Nutzer aus der
startedUser
abrufen. Argumentieren. onUserSwitched()
- Wird aufgerufen, nachdem das System zu einem anderen Nutzer gewechselt hat. Sie können den neuen Nutzer
das jetzt über das Argument
switchedUser
im Vordergrund ausgeführt wird. onUserStopped()
- Wird aufgerufen, nachdem das System einen Nutzer gestoppt hat, weil er sich abgemeldet oder zu einem
neuer Nutzer (wenn der Nutzer sitzungsspezifisch ist) oder der DPC den Nutzer angehalten hat. Sie erhalten
den Nutzer aus dem Argument
stoppedUser
. onUserAdded()
- Wird aufgerufen, wenn das System einen neuen Nutzer hinzufügt. Sekundäre Nutzer werden normalerweise nicht
wenn der Callback bei Ihrem DPC eingerichtet ist. Sie finden den Nutzer in der
newUser
-Argument onUserRemoved()
- Wird aufgerufen, nachdem ein Nutzer vom System gelöscht wurde. Da der Nutzer bereits gelöscht ist,
Sie können nicht auf den Nutzer zugreifen, der durch das Argument
removedUser
dargestellt wird.
Um zu erfahren, wann das System einen Nutzer in den Vordergrund bringt oder ihn zum
können Apps einen Empfänger für die
ACTION_USER_FOREGROUND
und
ACTION_USER_BACKGROUND
Broadcasts.
Nutzer finden
Um alle sekundären Nutzer zu erhalten, kann ein Administrator eines vollständig verwalteten Geräts den folgenden Link aufrufen:
DevicePolicyManager.getSecondaryUsers()
Die Ergebnisse
Alle sekundären oder sitzungsspezifischen Nutzer einschließen, die der Administrator erstellt hat. Auch die Ergebnisse
Alle sekundären Nutzer (oder Gastnutzer), die eine Person, die das Gerät verwendet,
die Sie erstellt haben. Die Ergebnisse enthalten keine Arbeitsprofile, da dies nicht
sekundäre Nutzer. Das folgende Beispiel zeigt, wie Sie diese Methode verwenden können:
Kotlin
// The device is stored for the night. Stop all running secondary users. dpm.getSecondaryUsers(adminName).forEach { dpm.stopUser(adminName, it) }
Java
// The device is stored for the night. Stop all running secondary users. for (UserHandle user : dpm.getSecondaryUsers(adminName)) { dpm.stopUser(adminName, user); }
Hier sind weitere Methoden, die Sie aufrufen können, um den Status von sekundären Nutzern zu ermitteln:
DevicePolicyManager.isEphemeralUser()
- Rufen Sie diese Methode vom Administrator eines sekundären Nutzers auf, um zu erfahren, ob es sich um einen flüchtigen Nutzern.
DevicePolicyManager.isAffiliatedUser()
- Rufen Sie diese Methode vom Administrator eines sekundären Nutzers auf, um herauszufinden, ob dieser Nutzer die mit dem Hauptnutzer verknüpft sind. Weitere Informationen zur Zugehörigkeit finden Sie unter DPC“. unten beschrieben.
Nutzerverwaltung
Wenn Sie den Nutzerlebenszyklus vollständig verwalten möchten, können Sie APIs für Detaillierte Kontrolle darüber, wann und wie das Gerät die Nutzer ändert Zum Beispiel haben Sie Sie können Nutzer löschen, wenn ein Gerät längere Zeit nicht verwendet wurde. nicht gesendete Bestellungen an einen Server senden, bevor die Schicht eines Mitarbeiters beendet ist.
Abmelden
Unter Android 9.0 wurde dem Sperrbildschirm eine Schaltfläche zum Abmelden hinzugefügt, damit Nutzer Gerät die Sitzung beenden kann. Nach dem Tippen auf die Taste stoppt das System die sekundärer Nutzer gelöscht wird, falls er sitzungsspezifisch ist, und der Primärnutzer kehrt in den Vordergrund. Android blendet die Schaltfläche aus, wenn sich der Hauptnutzer im da sich der Hauptnutzer nicht abmelden kann.
In Android wird die Schaltfläche zum Beenden der Sitzung nicht standardmäßig angezeigt, aber Ihr Administrator (einer
vollständig verwaltetes Gerät) können Sie ihn durch folgenden Aufruf aktivieren:
DevicePolicyManager.setLogoutEnabled()
Bei Bedarf
aktuellen Status der Schaltfläche bestätigen, Anruf
DevicePolicyManager.isLogoutEnabled()
Der Administrator eines sekundären Nutzers kann den Nutzer programmatisch abmelden und zurückkehren.
für den Hauptnutzer. Prüfen Sie zuerst, ob der sekundäre und der primäre Nutzer
verknüpft ist, und rufen Sie dann DevicePolicyManager.logoutUser()
an. Wenn
wenn der abgemeldete Nutzer ein flüchtiger Nutzer ist, beendet das System den Vorgang und löscht dann den
Nutzer.
Nutzer wechseln
Um zu einem anderen sekundären Nutzer zu wechseln, kann der Administrator eines vollständig verwalteten Geräts
Rufen Sie DevicePolicyManager.switchUser()
auf. Zur Vereinfachung können Sie
kann null
übergeben, um zum primären Nutzer zu wechseln.
Nutzer anhalten
Zum Beenden eines sekundären Nutzers kann ein DPC, dem ein vollständig verwaltetes Gerät gehört, einen Aufruf von
DevicePolicyManager.stopUser()
Wenn der angehaltene Nutzer ein
flüchtigen Nutzer verwenden, wird er beendet und dann gelöscht.
Wir empfehlen, Nutzer nach Möglichkeit aufzuhalten, um die Maximale Anzahl aktiver Nutzer.
Nutzer löschen
Um einen sekundären Nutzer endgültig zu löschen, kann ein DPC einen der folgenden Dienste aufrufen:
DevicePolicyManager
-Methoden:
- Ein Administrator eines vollständig verwalteten Geräts kann
removeUser()
anrufen. - Ein Administrator des sekundären Nutzers kann
wipeData()
aufrufen.
Sitzungsspezifische Nutzer werden vom System gelöscht, wenn sie abgemeldet, beendet oder gewechselt sind. entfernt werden.
Standard-UI deaktivieren
Wenn Ihr DPC eine Benutzeroberfläche zum Verwalten von Nutzern bereitstellt, können Sie die in Android integrierte
für mehrere Benutzeroberflächen. Rufen Sie dazu
DevicePolicyManager.setLogoutEnabled()
und fügen Sie den
DISALLOW_USER_SWITCH
-Einschränkung, wie in den
folgendes Beispiel:
Kotlin
// Explicitly disallow logging out using Android UI (disabled by default). dpm.setLogoutEnabled(adminName, false) // Disallow switching users in Android's UI. This DPC can still // call switchUser() to manage users. dpm.addUserRestriction(adminName, UserManager.DISALLOW_USER_SWITCH)
Java
// Explicitly disallow logging out using Android UI (disabled by default). dpm.setLogoutEnabled(adminName, false); // Disallow switching users in Android's UI. This DPC can still // call switchUser() to manage users. dpm.addUserRestriction(adminName, UserManager.DISALLOW_USER_SWITCH);
Die Person, die das Gerät verwendet, kann über die integrierte Android-Benutzeroberfläche keine sekundären Nutzer hinzufügen
da Administratoren vollständig verwalteter Geräte automatisch
DISALLOW_ADD_USER
-Nutzereinschränkung.
Sitzungsnachrichten
Wenn die Person, die ein Gerät verwendet, zu einem neuen Nutzer wechselt, zeigt Android um den Schalter zu markieren. Android zeigt die folgenden Meldungen an:
- Nachricht zum Starten der Nutzersitzung, die angezeigt wird, wenn das Gerät zu einem sekundären Gerät wechselt vom primären Nutzer zu erhalten.
- Mitteilung zur Endnutzersitzung, die angezeigt wird, wenn das Gerät an den Hauptnutzer zurückkehrt von einem sekundären Nutzer.
Beim Wechsel zwischen zwei sekundären Nutzern werden die Nachrichten nicht angezeigt.
Da die Nachrichten möglicherweise nicht für alle Situationen geeignet sind, können Sie den Text dieser Nachrichten. Wenn Ihre Lösung z. B. flüchtigen Modus verwendet, können Sie dies beispielsweise in folgenden Meldungen erkennen: Browser beenden Sitzung & Personenbezogene Daten werden gelöscht...
Das System zeigt die Nachricht nur wenige Sekunden lang an, sodass jede Nachricht
sollte ein kurzer, klarer Satz sein. Zum Anpassen der Nachrichten kann Ihr Administrator Folgendes anrufen:
die DevicePolicyManager
-Methoden
setStartUserSessionMessage()
und
setEndUserSessionMessage()
, wie in den
folgendes Beispiel:
Kotlin
// Short, easy-to-read messages shown at the start and end of a session. // In your app, store these strings in a localizable resource. internal val START_USER_SESSION_MESSAGE = "Starting guest session…" internal val END_USER_SESSION_MESSAGE = "Stopping & clearing data…" // ... dpm.setStartUserSessionMessage(adminName, START_USER_SESSION_MESSAGE) dpm.setEndUserSessionMessage(adminName, END_USER_SESSION_MESSAGE)
Java
// Short, easy-to-read messages shown at the start and end of a session. // In your app, store these strings in a localizable resource. private static final String START_USER_SESSION_MESSAGE = "Starting guest session…"; private static final String END_USER_SESSION_MESSAGE = "Stopping & clearing data…"; // ... dpm.setStartUserSessionMessage(adminName, START_USER_SESSION_MESSAGE); dpm.setEndUserSessionMessage(adminName, END_USER_SESSION_MESSAGE);
Übergib null
, um deine benutzerdefinierten Nachrichten zu löschen und zur Standardeinstellung von Android zurückzukehren
Nachrichten. Wenn Sie den aktuellen Nachrichtentext lesen möchten, rufen Sie
getStartUserSessionMessage()
oder
getEndUserSessionMessage()
Der DPC sollte lokalisierte Nachrichten festlegen für die aktuelle Sprache des Nutzers aus. Sie müssen die Nachrichten auch aktualisieren, wenn der Änderungen der Sprache des Nutzers:
Kotlin
override fun onReceive(context: Context?, intent: Intent?) { // Added the <action android:name="android.intent.action.LOCALE_CHANGED" /> // intent filter for our DeviceAdminReceiver subclass in the app manifest file. if (intent?.action === ACTION_LOCALE_CHANGED) { // Android's resources return a string suitable for the new locale. getManager(context).setStartUserSessionMessage( getWho(context), context?.getString(R.string.start_user_session_message)) getManager(context).setEndUserSessionMessage( getWho(context), context?.getString(R.string.end_user_session_message)) } super.onReceive(context, intent) }
Java
public void onReceive(Context context, Intent intent) { // Added the <action android:name="android.intent.action.LOCALE_CHANGED" /> // intent filter for our DeviceAdminReceiver subclass in the app manifest file. if (intent.getAction().equals(ACTION_LOCALE_CHANGED)) { // Android's resources return a string suitable for the new locale. getManager(context).setStartUserSessionMessage( getWho(context), context.getString(R.string.start_user_session_message)); getManager(context).setEndUserSessionMessage( getWho(context), context.getString(R.string.end_user_session_message)); } super.onReceive(context, intent); }
DPC-Koordination
Für die Verwaltung von sekundären Nutzern sind in der Regel zwei Instanzen Ihres DPC erforderlich – eine, die das vollständig verwaltete Gerät und der sekundäre Nutzer gehört der anderen Person. Beim Erstellen einen neuen Nutzer hat, legt der Administrator des vollständig verwalteten Geräts sich selbst als Administrator des neuen Nutzers befindet.
Zugehörige Nutzer
Einige der APIs in diesem Entwicklerhandbuch funktionieren nur, wenn die sekundären Nutzer die verbunden sind. Weil Android einige Funktionen deaktiviert (z. B. Netzwerkprotokollierung), wenn Sie neue, nicht verbundene sekundäre Nutzer zu solltet ihr Nutzende so schnell wie möglich verknüpfen. Ein Beispiel: Einrichtung unten.
Einrichten
Richten Sie vor dem Erstellen neuer sekundärer Nutzer über den DPC, zu dem der sekundäre Nutzer gehört, neue sekundäre Nutzer ein.
die sie nutzen lassen. Sie können diese Einrichtung über die
DeviceAdminReceiver.onEnabled()
-Callback Wenn Sie zuvor
alle Administrator-Extras im Anruf auf createAndManageUser()
festlegen, erhalten Sie
aus dem Argument intent
. Im folgenden Beispiel sehen Sie,
einen neuen sekundären Nutzer im Callback:
Kotlin
override fun onEnabled(context: Context?, intent: Intent?) { super.onEnabled(context, intent) // Get the affiliation ID (our DPC previously put in the extras) and // set the ID for this new secondary user. intent?.getStringExtra(AFFILIATION_ID_KEY)?.let { val dpm = getManager(context) dpm.setAffiliationIds(getWho(context), setOf(it)) } // Continue setup of the new secondary user ... }
Java
public void onEnabled(Context context, Intent intent) { // Get the affiliation ID (our DPC previously put in the extras) and // set the ID for this new secondary user. String affiliationId = intent.getStringExtra(AFFILIATION_ID_KEY); if (affiliationId != null) { DevicePolicyManager dpm = getManager(context); dpm.setAffiliationIds(getWho(context), new HashSet<String>(Arrays.asList(affiliationId))); } // Continue setup of the new secondary user ... }
RPCs zwischen DPCs
Obwohl die beiden DPC-Instanzen unter verschiedenen Nutzern ausgeführt werden,
die das Gerät besitzen, und die sekundären Nutzer können miteinander kommunizieren.
Da beim Aufrufen des Dienstes eines anderen DPC die Nutzergrenzen überschritten werden, kann Ihr DPC keine
Rufen Sie bindService()
auf, wie Sie es normalerweise in
Android Zur Bindung an einen Dienst, der in
ein anderer Nutzer, rufen Sie
DevicePolicyManager.bindDeviceAdminServiceAsUser()
Ihr DPC kann sich nur an Dienste binden, die in den Nutzern ausgeführt werden, die von
DevicePolicyManager.getBindDeviceAdminTargetUsers()
Das folgende Beispiel zeigt den Administrator einer sekundären Nutzerbindung an den Administrator
des vollständig verwalteten Geräts:
Kotlin
// From a secondary user, the list contains just the primary user. dpm.getBindDeviceAdminTargetUsers(adminName).forEach { // Set up the callbacks for the service connection. val intent = Intent(mContext, FullyManagedDeviceService::class.java) val serviceconnection = object : ServiceConnection { override fun onServiceConnected(componentName: ComponentName, iBinder: IBinder) { // Call methods on service ... } override fun onServiceDisconnected(componentName: ComponentName) { // Clean up or reconnect if needed ... } } // Bind to the service as the primary user [it]. val bindSuccessful = dpm.bindDeviceAdminServiceAsUser(adminName, intent, serviceconnection, Context.BIND_AUTO_CREATE, it) }
Java
// From a secondary user, the list contains just the primary user. List<UserHandle> targetUsers = dpm.getBindDeviceAdminTargetUsers(adminName); if (targetUsers.isEmpty()) { // If the users aren't affiliated, the list doesn't contain any users. return; } // Set up the callbacks for the service connection. Intent intent = new Intent(mContext, FullyManagedDeviceService.class); ServiceConnection serviceconnection = new ServiceConnection() { @Override public void onServiceConnected( ComponentName componentName, IBinder iBinder) { // Call methods on service ... } @Override public void onServiceDisconnected(ComponentName componentName) { // Clean up or reconnect if needed ... } }; // Bind to the service as the primary user. UserHandle primaryUser = targetUsers.get(0); boolean bindSuccessful = dpm.bindDeviceAdminServiceAsUser( adminName, intent, serviceconnection, Context.BIND_AUTO_CREATE, primaryUser);
Weitere Informationen
Weitere Informationen zu zweckbestimmten Geräten finden Sie in den folgenden Dokumenten:
- Die Übersicht zu zweckbestimmten Geräten bietet einen Überblick über zweckbestimmte Geräte.
- Im Modus „Aufgaben sperren“ wird erläutert, wie Sie ein zweckbestimmtes Gerät für eine oder mehrere Apps sperren.
- Kochbuch für zweckbestimmte Geräte mit weitere Beispiele zur Einschränkung der zweckbestimmten Geräte und zur Verbesserung der Nutzererfahrung.