Cihaz yöneticisi desteğinin sonlandırılması. Bazı yönetici politikaları çağrıldığında desteği sonlandırıldı olarak işaretlendi cihaz yöneticisi tarafından. Daha fazla bilgi edinmek ve taşıma seçeneklerini görmek için bkz. Cihaz yöneticisi desteğinin sonlandırılması.
Android 2.2 (API düzeyi 8) sürümünden itibaren, Android platformu sistem düzeyinde cihaz yönetimi sunar. özelliklerini kullanarak yeni özellikler elde edebilirsiniz.
Bu derste, cihaz yönetimi politikalarını zorunlu kılarak. Daha ayrıntılı belirtmek gerekirse, uygulama cihaz görüntülenmeden önce yeterli güçte bir ekran kilidi şifresinin ayarlandığından emin olun. kullanıcıya kısıtlanmış içerik sunar.
Politikanızı tanımlama ve beyan etme
İlk olarak, işlevsel düzeyde desteklenecek politika türlerini tanımlamanız gerekir. Politikalar ekran kilidi şifre gücünü, geçerlilik sonu zaman aşımını, şifrelemeyi vb. kapsama
Uygulama tarafından zorunlu kılınacak seçili politika grubunu
res/xml/device_admin.xml
dosyası yükleyin. Android manifest'inde aynı zamanda
belirtilen politika ayarı.
Beyan edilen her politika, DevicePolicyManager
ürününde belirli sayıda ilgili cihaz politikası yöntemine karşılık gelir (minimum şifre uzunluğunu ve minimum şifre sayısını tanımlar
büyük harfli karakterler iki örnektir.) Bir uygulama,
ilgili politika XML'de bildirilmez. Bu durum, çalışma zamanında bir SecurityException
ile sonuçlanır. Diğer izinler
Uygulama, yönetmeyi amaçlıyorsa force-lock
gibi
izin vermez. Daha sonra göreceğiniz gibi, cihaz yöneticisi etkinleştirme işleminin bir parçası olarak
beyan edilen politikaların listesi, kullanıcıya sistem ekranında sunulur.
Aşağıdaki snippet, res/xml/device_admin.xml
bölgesinde şifre sınırlama politikasını tanımlar:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <limit-password /> </uses-policies> </device-admin>
Android manifest dosyasında referans verilen politika beyanı XML'i:
<receiver android:name=".Policy$PolicyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
Cihaz yönetimi alıcısı oluşturma
Desteklediğini beyan ettiğiniz politikalarla ilgili etkinlikler hakkında bildirim alacak bir Cihaz Yönetimi yayın alıcı oluşturun. Bir uygulama, geri çağırma yöntemlerini seçerek geçersiz kılabilir.
Örnek uygulamada (Cihaz Yöneticisi) cihaz yöneticisi, kullanıcının yapılandırdığı politika, paylaşılan tercihten silinir. Veri feed'i oluştururken uygun iş mantığı oluşturma sürecidir. Örneğin, uygulamanın tamamlanması Güvenlik riskini azaltmak için, cihazı, uzaktan senkronizasyonu devre dışı bırakma, yöneticiyi uyarma vb.
Yayın alıcının çalışması için, bunu yukarıdaki snippet'te gösterildiği gibi Android manifest'ine kaydettiğinizden emin olun.
Kotlin
class PolicyAdmin : DeviceAdminReceiver() { override fun onDisabled(context: Context, intent: Intent) { // Called when the app is about to be deactivated as a device administrator. // Deletes previously stored password policy. super.onDisabled(context, intent) context.getSharedPreferences(APP_PREF, Activity.MODE_PRIVATE).edit().apply { clear() apply() } } }
Java
public static class PolicyAdmin extends DeviceAdminReceiver { @Override public void onDisabled(Context context, Intent intent) { // Called when the app is about to be deactivated as a device administrator. // Deletes previously stored password policy. super.onDisabled(context, intent); SharedPreferences prefs = context.getSharedPreferences(APP_PREF, Activity.MODE_PRIVATE); prefs.edit().clear().commit(); } }
Cihaz yöneticisini etkinleştirme
Herhangi bir politikayı zorunlu kılmadan önce, kullanıcının uygulamayı cihaz olarak manuel olarak etkinleştirmesi gerekir
yönetici izni gerekir. Aşağıdaki snippet,
etkinleştirebileceği anlamına gelir. Belgenize ön plana çıkaracak açıklayıcı metin eklemek iyi bir uygulamadır.
uygulamanın neden cihaz yöneticisi olmak istediğini kullanıcılara göstermek için
Amaç fazladan EXTRA_ADD_EXPLANATION
.
Şekil 1. Bu ekranda, cihaz politikalarınızın bir açıklamasını girin.
Kotlin
if (!policy.isAdminActive()) { val activateDeviceAdminIntent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN) activateDeviceAdminIntent.putExtra( DevicePolicyManager.EXTRA_DEVICE_ADMIN, policy.getPolicyAdmin() ) // It is good practice to include the optional explanation text to // explain to user why the application is requesting to be a device // administrator. The system will display this message on the activation // screen. activateDeviceAdminIntent.putExtra( DevicePolicyManager.EXTRA_ADD_EXPLANATION, resources.getString(R.string.device_admin_activation_message) ) startActivityForResult(activateDeviceAdminIntent, REQ_ACTIVATE_DEVICE_ADMIN) }
Java
if (!policy.isAdminActive()) { Intent activateDeviceAdminIntent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); activateDeviceAdminIntent.putExtra( DevicePolicyManager.EXTRA_DEVICE_ADMIN, policy.getPolicyAdmin()); // It is good practice to include the optional explanation text to // explain to user why the application is requesting to be a device // administrator. The system will display this message on the activation // screen. activateDeviceAdminIntent.putExtra( DevicePolicyManager.EXTRA_ADD_EXPLANATION, getResources().getString(R.string.device_admin_activation_message)); startActivityForResult(activateDeviceAdminIntent, REQ_ACTIVATE_DEVICE_ADMIN); }
Kullanıcı "Etkinleştir"i seçerse Uygulama, cihaz yöneticisi olur ve Politika'yı yapılandırmak ve uygulamaktır.
Uygulamanın, kullanıcının uygulamayı terk ettiği geçmiş durumları yönetmek için de hazır olması gerekir.
İptal düğmesine, Geri tuşuna veya Ana Ekran tuşuna basarak etkinleştirme işlemini tamamlayın. Dolayısıyla,
Politika Kurulum Etkinliği'nde onResume()
mantığı olmalıdır
durumu yeniden değerlendirmek ve
gerekir.
Cihaz politikası denetleyiciyi uygulama
Cihaz yöneticisi başarıyla etkinleştirildikten sonra uygulama, Cihaz'ı yapılandırır. İstenen politikaya sahip Politika Yöneticisi. Lütfen Her sürümle birlikte Android. hem de yeni politikalar uygulayarak platformun eski sürümlerini destekler. Örneğin, Minimum Şifre Büyük Harf Politikası, yalnızca API düzeyi 11 (Honeycomb) ve sonraki sürümlerde kullanılabilir. Aşağıdaki kod çalışma zamanında sürümü nasıl kontrol edebileceğinizi gösterir.
Kotlin
private lateinit var dpm: DevicePolicyManager private lateinit var policyAdmin: ComponentName dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager policyAdmin = ComponentName(context, PolicyAdmin::class.java) dpm.apply { setPasswordQuality(policyAdmin, PASSWORD_QUALITY_VALUES[passwordQuality]) setPasswordMinimumLength(policyAdmin, passwordLength) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { setPasswordMinimumUpperCase(policyAdmin, passwordMinUpperCase) } }
Java
DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName policyAdmin = new ComponentName(context, PolicyAdmin.class); dpm.setPasswordQuality(policyAdmin, PASSWORD_QUALITY_VALUES[passwordQuality]); dpm.setPasswordMinimumLength(policyAdmin, passwordLength); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { dpm.setPasswordMinimumUpperCase(policyAdmin, passwordMinUpperCase); }
Uygulama bu noktada politikayı zorunlu kılabilir. Uygulamanın erişiminin olmaması durumunda veya şifre değiştirme işlemini gerçekleştirdiğinden, Device Policy Manager API'si aracılığıyla mevcut şifrenin gerekli politikaya uygun olup olmadığını kontrol edin. Mevcut durumda ekran kilidi şifresi yeterli değil, cihaz yönetimi API'si otomatik olarak düzeltici eylemdir. Sistemi açıkça kullanıma sunmak uygulamanın sorumluluğundadır. şifre değiştirme ekranını seçin. Örnek:
Kotlin
if (!dpm.isActivePasswordSufficient) { // Triggers password change screen in Settings. Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent -> startActivity(intent) } }
Java
if (!dpm.isActivePasswordSufficient()) { ... // Triggers password change screen in Settings. Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD); startActivity(intent); }
Normalde, kullanıcı Hiçbiri, Desen veya Desen gibi mevcut kilit mekanizmaları arasından seçim yapabilir. PIN (sayısal) veya Şifre (alfasayısal). Bir şifre politikası yapılandırıldığında bu şifreler politikada tanımlananlardan daha zayıf olan türler devre dışı bırakılır. Örneğin, "Sayısal" şifre kalitesi yapılandırıldığında, kullanıcı PIN (sayısal) veya Şifre seçebilir (alfasayısal) şifre kullanabilir.
Uygulama, uygun bir ekran kilidi şifresi ayarlanarak cihazı gerektiği gibi güvence altına güvenli içeriğe erişime izin verir.
Kotlin
when { !dpm.isAdminActive(policyAdmin) -> { // Activates device administrator. ... } !dpm.isActivePasswordSufficient -> { // Launches password set-up screen in Settings. ... } else -> { // Grants access to secure content. ... startActivity(Intent(context, SecureActivity::class.java)) } }
Java
if (!dpm.isAdminActive(..)) { // Activates device administrator. ... } else if (!dpm.isActivePasswordSufficient()) { // Launches password set-up screen in Settings. ... } else { // Grants access to secure content. ... startActivity(new Intent(context, SecureActivity.class)); }