Bu geliştirici kılavuzunda, cihaz politikası denetleyicinizin (DPC) Özel cihazlarda birden fazla Android kullanıcısını yönetebilirsiniz.
Genel Bakış
DPC'niz, birden fazla kişinin tek bir özel cihazı paylaşmasına yardımcı olabilir. DPC'niz tümüyle yönetilen bir cihazda çalıştırmak iki tür kullanıcı oluşturup yönetebilir:
- İkincil kullanıcılar, ayrı uygulamaları ve kayıtlı verileri olan Android kullanıcılarıdır oturumlar arasında geçiş yapın. Kullanıcıyı bir yönetici bileşeni ile yönetirsiniz. Bu kullanıcılar Bu, cihazın mesai başlangıcında teslim alındığı durumlarda kullanışlıdır (örneğin, teslimat görevlileri veya güvenlik çalışanları.
- Geçici kullanıcılar, kullanıcı aşağıdaki işlemleri gerçekleştirdiğinde sistemin sildiği ikincil kullanıcılardır: kapatması, kapatması veya cihaz yeniden başlatılması anlamına gelir. Bu kullanıcılar, oturum bittikten sonra verilerin silinebileceği (ör. herkese açık erişim) olduğunu varsayalım.
Özel cihazı ve ikincil cihazı yönetmek için mevcut DPC'nizi kullanırsınız. yardımcı olur. DPC'nizdeki bir yönetici bileşeni, kendisini yeni ikincil için yönetici olarak ayarlar kullanıcılar için ek süre oluşturabilirsiniz.
'nı inceleyin.İkincil kullanıcının yöneticileri, tümüyle yönetilen bir cihaz. Geliştirme sürecini basitleştirmek için bir yöneticiyi paylaşmanızı öneririz cihaz ile ikincil kullanıcılar arasında geçiş yapar.
Özel cihazlarda birden fazla kullanıcıyı yönetmek için genellikle Android 9.0 gerekir. Ancak bu geliştirici kılavuzunda kullanılan yöntemlerden bazıları Android'in önceki sürümleri.
İkincil kullanıcılar
İkincil kullanıcılar kablosuz ağa bağlanabilir ve yeni ağlar yapılandırabilir. Ancak, oluşturdukları ağlar da dahil olmak üzere, ağları düzenleyemez veya silemez.
Kullanıcı oluşturma
DPC'niz arka planda ek kullanıcılar oluşturup bu kullanıcılar arasında geçiş yapabilir görüntüler. Bu süreç hem ikincil hem de ikincil Geçici kullanıcılar için de uygundur. Aşağıdaki adımları tam olarak yönetilen cihaz ve ikincil kullanıcı:
DevicePolicyManager.createAndManageUser()
numaralı telefonu arayın. Geçici kullanıcı oluşturmak için İşaretler bağımsız değişkenindeMAKE_USER_EPHEMERAL
.- Telefonla arama
DevicePolicyManager.startUserInBackground()
- arka planda başlatmanızı sağlar. Kullanıcı çalışmaya başlar ancak kullanıcıya göstermeden önce kurulumu tamamlaması etkili bir yoludur. - İkincil kullanıcının yöneticisinde şu numarayı arayın:
DevicePolicyManager.setAffiliationIds()
- Yeni kullanıcıyı birincil kullanıcıyla ilişkilendirin. Görüntüleyin DPC koordinasyonu hakkında daha fazla bilgi edinin. - Tümüyle yönetilen cihazın yöneticisine geri dönün,
Kullanıcıyı değiştirmek için
DevicePolicyManager.switchUser()
görebilirsiniz.
Aşağıdaki örnekte, 1. adımı DPC'nize nasıl ekleyebileceğinizi görebilirsiniz:
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... } }
Yeni bir kullanıcı oluşturduğunuzda veya başlatırken hataların nedenini kontrol edebilirsiniz
UserOperationException
istisnasını yakalayıp
getUserOperationResult()
. Kullanıcı sınırını aşma
Sınırlar, sık karşılaşılan hata nedenleridir:
Kullanıcı oluşturmak biraz zaman alabilir. Sık sık kullanıcı oluşturuyorsanız kullanıma hazır bir kullanıcıyı arka planda hazırlayarak kullanıcı deneyimini iyileştirmeye yardımcı olur. Her zaman hazır olan bir kullanıcının avantajlarını maksimum değer ile bir cihazda izin verilen kullanıcı sayısı.
Tanımlama
Yeni bir kullanıcı oluşturduktan sonra, kalıcı seri numarası olan kullanıcıya başvurmanız gerekir
sayı. Sistem, siz işlemi yaparken UserHandle
bunları geri dönüştüreceğinden ısrarcı olmayın
kullanıcı oluşturabilir ve silebilir. Şu numarayı arayarak seri numarasını öğrenin:
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 ... }
Kullanıcı yapılandırması
Kullanıcılarınızın ihtiyaçlarına bağlı olarak, ikincil ayarlarını özelleştirebilirsiniz.
yardımcı olur. createAndManageUser()
öğesini çağırırken aşağıdaki işaretleri ekleyebilirsiniz:
SKIP_SETUP_WIZARD
- Güncellemeleri kontrol eden ve yükleyen yeni kullanıcı kurulum sihirbazını çalıştırmayı atlar, kullanıcıdan Google hizmetleriyle birlikte bir Google Hesabı eklemesini ister ve gerekir. Bu işlem biraz zaman alabilir ve tüm reklamverenler için geçerli olmayabilir. kullanıcıları (ör. herkese açık internet kioskları) kullanabilirsiniz.
LEAVE_ALL_SYSTEM_APPS_ENABLED
- Yeni kullanıcıda tüm sistem uygulamalarını etkin durumda bırakır. Bu işareti ayarlamazsanız Yeni kullanıcı, telefonun yapması gereken minimum uygulama grubunu içerir. genellikle bir dosya tarayıcısı, numara çevirici, kişiler ve SMS mesajlarıdır.
Kullanıcı yaşam döngüsünü takip edin
DPC'niz (tamamen yönetilen cihazın yöneticisiyse) şunları yapmak için faydalı olabilir:
ne zaman değiştiğini görün. Değişikliklerden sonra takip görevleri çalıştırmak için
aşağıdaki geri çağırma yöntemlerini kullanın:DeviceAdminReceiver
onUserStarted()
- Sistem bir kullanıcıyı başlattıktan sonra çağrılır. Bu kullanıcı hâlâ kurulum yapıyor olabilir veya
arka planda çalışıyor. Kullanıcıyı
startedUser
üzerinden alabilirsiniz bağımsız değişkendir. onUserSwitched()
- Sistem farklı bir kullanıcıya geçtikten sonra çağrılır. Yeni kullanıcıyı alabilirsiniz
Bu işlem artık
switchedUser
bağımsız değişkeninden ön planda çalışıyor. onUserStopped()
- Kullanıcı çıkış yaptığı için sistem bir kullanıcıyı durdurduktan sonra çağrılır.
veya DPC'niz kullanıcıyı durdurdu. Şundan faydalanabilirsiniz:
kullanıcıyı
stoppedUser
bağımsız değişkeninden çağırın. onUserAdded()
- Sistem yeni bir kullanıcı eklediğinde çağrılır. İkincil kullanıcılar genellikle
DPC'niz geri arama aldığında tamamen ayarlanır. Kullanıcıyı şuradan alabilirsiniz:
newUser
bağımsız değişken. onUserRemoved()
- Sistem bir kullanıcıyı sildikten sonra çağrılır. Kullanıcı zaten silinmiş olduğundan
removedUser
bağımsız değişkeniyle temsil edilen kullanıcıya erişemezsiniz.
Sistemin bir kullanıcıyı ne zaman ön plana getirdiğini veya bir kullanıcıyı
arka planda bir alıcı kaydedebilir
ACTION_USER_FOREGROUND
ve
ACTION_USER_BACKGROUND
yayın.
Kullanıcıları keşfedin
Tüm ikincil kullanıcıları almak için tümüyle yönetilen bir cihazın yöneticisi telefon edebilir
DevicePolicyManager.getSecondaryUsers()
. Sonuçlar
yöneticinin oluşturduğu tüm ikincil veya geçici kullanıcıları içermelidir. Sonuçlar ayrıca
cihazı kullanan bir kişinin ikincil kullanıcıları (veya bir misafir kullanıcıyı)
oluşturuyor. İş profilleri dahil değildir, çünkü sonuçlar
ikincil kullanıcılar Aşağıdaki örnekte, bu yöntemi nasıl kullanabileceğiniz gösterilmektedir:
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); }
İkincil kullanıcıların durumunu öğrenmek için başvurabileceğiniz diğer yöntemler şunlardır:
DevicePolicyManager.isEphemeralUser()
- Bunun bir ikincil kullanıcı yöneticisi olup olmadığını öğrenmek için yöneticiden bu yöntemi çağırın Geçici kullanıcı.
DevicePolicyManager.isAffiliatedUser()
- İkincil bir kullanıcının yöneticisinden bu kullanıcının şu işlemi yapıp yapmadığını öğrenmek için yöntemi çağırın: birincil kullanıcıyla ilişkili olduğundan emin olun. Satış ortaklığı hakkında daha fazla bilgi edinmek için DPC'ye bakın koordinasyon bölümünü inceleyin.
Kullanıcı yönetimi
Kullanıcı yaşam döngüsünü tamamen yönetmek isterseniz cihazın kullanıcıları ne zaman ve nasıl değiştireceği üzerinde ayrıntılı kontrol. Örneğin, cihaz bir süre kullanılmadığında kullanıcıyı silebilir veya gönderilmemiş siparişleri bir kişinin vardiyası bitmeden bir sunucuya gönderebilir.
Çıkış
Android 9.0'da kilit ekranına bir çıkış düğmesi ekledi. Böylece, sonlandırılabilir. Düğmeye dokunduktan sonra sistem, ikincil kullanıcı, geçiciyse kullanıcıyı siler ve birincil kullanıcı görüntüler. Android, birincil kullanıcı Birincil kullanıcı çıkış yapamayacağı için ön planda çalışır.
Android'de oturum sonu düğmesi varsayılan olarak gösterilmez, ancak yöneticiniz (
tümüyle yönetilen bir cihaz) telefon ederek bu özelliği etkinleştirebilir.
DevicePolicyManager.setLogoutEnabled()
. Gerekirse
düğmenin mevcut durumunu onaylama, çağrı
DevicePolicyManager.isLogoutEnabled()
.
İkincil bir kullanıcının yöneticisi, programlı bir şekilde kullanıcının oturumunu kapatıp
birincil kullanıcıya yönlendirir. Öncelikle, ikincil ve birincil kullanıcıların
ilişkilendirdikten sonra DevicePolicyManager.logoutUser()
numaralı telefonu arayın. Eğer
oturumu kapalı kullanıcı geçici bir kullanıcıysa, sistem durur ve
belirtir.
Kullanıcı değiştir
Farklı bir ikincil kullanıcıya geçiş yapmak için tümüyle yönetilen bir cihazın yöneticisi şunları yapabilir:
DevicePolicyManager.switchUser()
numaralı telefonu arayın. Kolaylık sağlamak için
birincil kullanıcıya geçmek için null
öğesini geçirebilir.
Kullanıcıyı durdurma
Tümüyle yönetilen bir cihazın sahibi olan DPC, ikincil bir kullanıcıyı durdurmak için
DevicePolicyManager.stopUser()
. Durdurulan kullanıcı
geçici bir kullanıcı söz konusuysa kullanıcı durdurulur ve ardından silinir.
Cihazın şu sınırının altında kalmak için mümkün olduğunda kullanıcıları durdurmanızı öneririz: Maksimum sayıda çalışan kullanıcınız olmalıdır.
Kullanıcı silme
İkincil bir kullanıcıyı kalıcı olarak silmek için DPC aşağıdakilerden birini çağırabilir
DevicePolicyManager
yöntem:
- Tümüyle yönetilen bir cihazın yöneticisi
removeUser()
numaralı telefonu arayabilir. - İkincil kullanıcının bir yöneticisi
wipeData()
numaralı telefonu arayabilir.
Geçici kullanıcıları çıkış yaptıklarında, durduklarında veya geçiş yaptıklarında sistem silerler gözden kaçırabilirler.
Varsayılan kullanıcı arayüzünü devre dışı bırak
DPC'niz kullanıcıları yönetmek için bir kullanıcı arayüzü sağlıyorsa Android'in yerleşik özelliklerini devre dışı bırakabilirsiniz.
Çok kullanıcılı arayüz. Bu işlemi,
DevicePolicyManager.setLogoutEnabled()
ve
DISALLOW_USER_SWITCH
kısıtlaması.
şu örneği inceleyin:
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);
Cihazı kullanan kişi, Android’in yerleşik kullanıcı arayüzüyle ikincil kullanıcı ekleyemez
Tümüyle yönetilen cihazların yöneticileri
DISALLOW_ADD_USER
kullanıcı kısıtlaması.
Oturum mesajları
Cihazı kullanan kişi yeni bir kullanıcıya geçtiğinde Android, aşağıdakileri yapmak için bir panel gösterir: anahtarı vurgulayın. Android'de aşağıdaki mesajlar gösterilir:
- Cihaz ikincil bir cihaza geçtiğinde gösterilen kullanıcı oturumunu başlatma mesajı birincil kullanıcıdan alınan bir diğeri de kullanıcı olabilir.
- Cihaz birincil kullanıcıya döndüğünde gösterilen son kullanıcı oturumu mesajı kullanıcı hesapları ile işlem yapabilirsiniz.
İki ikincil kullanıcı arasında geçiş yapılırken sistem mesajları göstermez.
Mesajlar tüm durumlar için uygun olmayabileceğinden, metinlerini ekleyebilirsiniz. Örneğin, çözümünüz geçici kullanıcı kullanıyorsa oturumlarda, bu durumu iletilere şu şekilde yansıtabilirsiniz: Tarayıcıyı durdurma oturum ve kişisel veriler siliniyor...
Sistem, mesajı birkaç saniye boyunca gösterir. Bu nedenle,
kısa ve net bir ifade olmalıdır. Mesajları özelleştirmek için yöneticiniz şu numarayı arayabilir:
DevicePolicyManager
yöntemleri
setStartUserSessionMessage()
ve
setEndUserSessionMessage()
(şu şekilde gösterildiği gibi):
şu örneği inceleyin:
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);
Özel mesajlarınızı silmek ve Android'in varsayılan ayarına dönmek için null
kartınızı verin
mesaj. Mevcut mesaj metnini kontrol etmeniz gerekirse şu numarayı arayın:
getStartUserSessionMessage()
veya
getEndUserSessionMessage()
.
DPC'niz yerelleştirilmiş mesajları ayarlamalıdır kullanıcının mevcut yerel ayarıdır. Ayrıca, kullanıcının yerel ayarı:
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 koordinasyonu
İkincil kullanıcıları yönetmek için genellikle DPC'nizin iki örneği gerekir; bunlardan biri tümüyle yönetilen cihazda, diğer ise ikincil kullanıcıya ait olur. Oluştururken yeni bir kullanıcı söz konusu olduğunda, tümüyle yönetilen cihazın yöneticisi başka bir kendisini yeni kullanıcının yöneticisi olarak görür.
İlişkili kullanıcılar
Bu geliştirici kılavuzundaki bazı API'ler, yalnızca ikincil kullanıcılar satış ortağı olması gerekir. Android bazı özellikleri devre dışı bıraktığı için (örneğin, ağ günlük kaydı) içerebilir. en kısa sürede kullanıcıları satış ortağı olarak belirlemeniz gerekir. Aşağıdaki örnekte Aşağıdaki ayarları yapın.
Kurulum
tarihinden önce, yeni ikincil kullanıcılar (ikincil kullanıcının sahibi olan DPC'den) ayarlayın
kullanabilmelerini sağlamak. Bu kurulumu şuradan yapabilirsiniz:
DeviceAdminReceiver.onEnabled()
geri arama. Daha önce
görüşmedeki gerekli yönetici eklerini createAndManageUser()
olarak ayarlarsanız,
değerleri intent
bağımsız değişkeninden alınır. Aşağıdaki örnekte, bir DPC satış ortağı gösterilmektedir
geri çağırmada yeni bir ikincil kullanıcı:
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 ... }
DPC'ler arasındaki RPC'ler
İki DPC örneği ayrı kullanıcılar altında çalışıyor olsa da DPC'ler
ikincil kullanıcılar birbirleriyle iletişim kurabilir.
Başka bir DPC'nin hizmetini çağırmak kullanıcı sınırlarını aştığından
bindService()
numaralı telefonu normalde
Android. Şunda çalışan bir hizmete bağlanmak için:
başka bir kullanıcı, ara
DevicePolicyManager.bindDeviceAdminServiceAsUser()
.
DPC'niz yalnızca
DevicePolicyManager.getBindDeviceAdminTargetUsers()
.
Aşağıdaki örnekte, yönetici ile bağlantı kuran ikincil bir kullanıcının yöneticisi gösterilmektedir
(tümüyle yönetilen cihazın:
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);
Ek kaynaklar
Bir amaca özel ayrılmış cihazlar hakkında daha fazla bilgi edinmek için aşağıdaki dokümanları okuyun:
- Özel cihazlara genel bakış, cihazlar.
- Görevi kilitleme özelliği, Özel bir cihazı tek bir uygulamaya veya uygulama grubuna kilitleme.
- Özel cihaz tarif defteri Özel cihazları kısıtlamak ve kullanıcı deneyimini geliştirmek için sahip olacaksınız.