Cihaz yönetimine genel bakış

Cihaz yöneticisi desteğinin sonlandırılması. Android 9 ve sonraki sürümler API düzeyi 28) ihlal edildiğinde, bazı yönetici politikaları "Kullanımdan kaldırıldı" olarak işaretlenir. bir cihaz yöneticisi tarafından çağrıldığında Bu değişikliğe hemen hazırlanmaya başlamanızı öneririz. Öğrenmek için taşıma seçeneklerini görmek için Cihaz yöneticisi desteğinin sonlandırılması.

Android, Android'in sunduğu Android Cihaz Yönetimi API'si. Device Management API, kullanıcıların düzeyinde değerlendirmeniz olacaktır. Bu API'ler sayesinde kurumsal ortamlarda faydalı olan ve BT ekiplerinin profesyonellerin çalışan cihazları üzerinde kapsamlı denetime sahip olması gerekir. Örneğin, yerleşik Android E-posta uygulaması, Exchange desteği. Exchange yöneticileri, E-posta uygulaması aracılığıyla alfasayısal veya sayısal şifreler dahil olmak üzere şifre politikalarını zorunlu kılma PIN'ler — tüm cihazlarda. Ayrıca yöneticiler, verileri uzaktan silebilir (yani fabrika varsayılanlarını geri yükleme) kaybolan veya çalınan cep telefonları. Exchange kullanıcıları senkronize edebilir e-posta ve takvim verileri.

Bu belge, kurumsal ve gelişmiş kurumsal uygulamalar geliştirmek isteyen geliştiricilere çözümlere ihtiyaç duyabilir. Bu videoda proje yönetiminin cihazlar için daha güçlü güvenlik sağlamak üzere Device Management API tarafından çalışanların kullandığı Android cihazlardan biri.

Not İş Politikası oluşturma hakkında bilgi için Android for Work dağıtımları için denetleyici, bkz. Cihaz Politikası Denetleyicisi oluşturun.

Gözetimsiz Cihaz Sahibi Modu

Android 14 (API düzeyi 34) sürümünde, gözetimsiz sistem kullanıcısı modu kullanıma sunuldu ( hangi UserManager.isHeadlessSystemUserMode true değerini döndürür). Gözetimsiz Sistem Kullanıcısı modunda sistem kullanıcısı arka plan kullanıcısıdır ve son kullanıcı için ek ön plan bahsedeceğim. Android 14 ayrıca gözetimsiz cihaz sahibi ile ilişkilendirilmiş modu varsa Bu sayede, kullanıcının ilişkili kullanıcılar Cihaz Sahibi'nin ayarlandığı sistem kullanıcısı dışındaki kullanıcılar.

Gözetimsiz sistem kullanıcısı (sistem kullanıcısının arka planda çalışır), yalnızca kapsam dahilinde olan cihaz politikaları (tüm kullanıcılar için geçerli politikalar) ön plandaki kullanıcıya uygulanır veya kullanıcılarla paylaşabilir. Görüntüleyin addUserRestriction inceleyebilirsiniz.

Android cihaz üreticileri rehberlik source.android.com'da yayınlandı.

Device management API'ye genel bakış

Cihaz Yönetimi API'sini kullanabilecek uygulama türlerine ait örnekleri aşağıda bulabilirsiniz:

  • E-posta istemcileri
  • Uzaktan silme özelliğine sahip güvenlik uygulamaları.
  • Cihaz yönetimi hizmetleri ve uygulamaları.

İşleyiş şekli

Kullanıcıların istediği cihaz yönetimi uygulamalarını yazmak için yüklüyor. Cihaz yönetimi uygulaması, politikalar. İşleyiş şekli:

  • Bir sistem yöneticisi, uzaktan/yerel cihaz güvenliği politikaları. Bu politikalar tek veya veya uygulama, politikaları bir üçüncü taraftan dinamik olarak sunucu.
  • Uygulama, kullanıcıların cihazlar. Android , şu anda otomatik bir temel hazırlık çözümüne sahip değil. Bir sistem yöneticisinin aşağıdaki gibi dağıtabilirsiniz:
    • Google Play.
    • Başka bir mağazadan yükleme etkinleştiriliyor.
    • Uygulamayı e-posta veya web siteleri gibi başka yollarla dağıtmak.
  • Sistem, kullanıcıdan cihaz yönetimi uygulamasını etkinleştirmesini ister. Nasıl? Bunun ne zaman gerçekleşeceği uygulamanın nasıl uygulandığına bağlıdır.
  • Kullanıcılar, cihaz yönetimi uygulamasını etkinleştirdikten sonra . Bu politikalara uymak genellikle aşağıdakiler gibi avantajlar sağlar: hassas sistemlere ve verilere erişmelerine yardımcı olur.

Kullanıcılar cihaz yönetimi uygulamasını etkinleştirmezse uygulama etkin olmayan bir şekilde cihazda kalır. Kullanıcılar, uygulamanın politikalarına tabi olmaz. Ayrıca, uygulamanın hiçbir avantajından yararlanamaz. Örneğin, verileri senkronize edemeyebilirler.

Bir kullanıcı politikalara uymazsa (örneğin, bir kullanıcı bir şifre belirleyecekseniz, uygulama kararına ele alacağız. Ancak bu genellikle kullanıcının verileri senkronize edebiliyorsunuz.

Bir cihaz, politika gerektirmeyen bir sunucuya bağlanmaya çalışırsa Device Management API'sinde destekleniyorsa bağlantı izin verilebilir. Device Management API şu anda kısmi temel hazırlık. Başka bir deyişle, bir cihaz (örneğin, eski bir cihaz) belirtilen tüm politikaları desteklemediğinden, veya cihaza bağlı.

Bir cihazda birden fazla etkin yönetici uygulaması varsa en katı politika emin olun. Belirli bir yönetici hedeflenemez uygulamasını indirin.

Mevcut bir cihaz yönetimi uygulamasının yüklemesini kaldırmak için kullanıcıların şunları yapması gerekir: önce uygulamanın yönetici kaydını iptal edin.

Politikalar

Kurumsal ortamlarda, çalışan cihazlarının çoğu zaman cihazın kullanımını yöneten katı politikalara uyar. İlgili içeriği oluşturmak için kullanılan Device Management API, Tablo 1'de listelenen politikaları destekler. Device Management API'nin şu anda yalnızca ekran şifrelerini desteklediğini unutmayın. kilit:

Tablo 1. Device Management API tarafından desteklenen politikalar.

Politika Açıklama
Şifre etkinleştirildi Cihazların PIN veya şifre istemesi gerekir.
Minimum şifre uzunluğu Şifre için gerekli karakter sayısını belirleyin. Örneğin, PIN veya şifrelerin en az altı karakterden oluşmasını gerektirebilir.
Alfa-sayısal şifre gerekli Şifrelerde bir harf ve rakam kombinasyonundan oluşur. Sembolik karakterler içerebilirler.
Karmaşık şifre gerekiyor Şifrelerde en az bir harf, bir rakam ve bir özel simge bulunması gerekir. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede kullanılması gereken minimum harf sayısı Kullanılabilen minimum tüm yöneticiler veya belirli bir yönetici için şifrede zorunlu olan harfler. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede gereken minimum küçük harf sayısı Minimum küçük harf sayısı tüm yöneticiler veya belirli bir yönetici için şifrede zorunlu olan harfler. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede harf olmayan minimum karakter olması gerekir Kullanılabilen minimum tüm yöneticiler veya belirli bir yönetici için şifrede harf olmayan bazı karakterler kullanılması gerekir. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede kullanılması gereken minimum sayısal basamak sayısı Tüm yöneticiler veya belirli bir yönetici için şifrede kullanılması gereken minimum sayısal basamak sayısı. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede kullanılması gereken minimum simge sayısı Tüm yöneticiler veya belirli bir yönetici için şifrede kullanılması gereken minimum simge sayısı. Android 3.0 sürümünde kullanıma sunuldu.
Şifrede kullanılması gereken minimum büyük harf sayısı Tüm yöneticiler veya belirli bir yönetici için şifrede kullanılması gereken minimum büyük harf sayısı. Android 3.0 sürümünde kullanıma sunuldu.
Şifre süre sonu zaman aşımı Şifrenin süresinin dolacağı zaman. Cihaz yöneticisinin geçerlilik bitiş zaman aşımını belirlediği andan itibaren milisaniye cinsinden delta cinsinden ifade edilir. Android 3.0 sürümünde kullanıma sunuldu.
Şifre geçmişi kısıtlaması Bu politika, kullanıcıların son n benzersiz şifreyi yeniden kullanmasını engeller. Bu politika genellikle setPasswordExpirationTimeout(), zorunlu kılar . Android 3.0 sürümünde kullanıma sunuldu.
Maksimum başarısız şifre denemesi sayısı Kullanıcının cihaz verilerini siler. Device Management API, yöneticilerin şunları da yapmasına olanak tanır: cihazı uzaktan fabrika varsayılan ayarlarına sıfırlama Bu sayede, kaybolduğunda veya çalındığında.
Maksimum işlemsizlik süresi kilidi Kullanıcının ekrana son dokunmasından bu yana geçen süreyi veya Cihaz ekranı kilitlemeden önce bir düğmeye bastı. Böyle bir durumda, kullanıcılar önce PIN veya şifrelerini tekrar girmeleri gerekir. verilere erişme. Değer 1 ile 60 dakika arasında olabilir.
Depolama alanı şifrelemesi gerektir Cihaz destekliyorsa, depolama alanının şifrelenmesi gerektiğini belirtir. Android 3.0 sürümünde kullanıma sunuldu.
Kamerayı devre dışı bırak Kameranın devre dışı bırakılması gerektiğini belirtir. Bu özellikte kalıcı bir devre dışı bırakma işlemi olduğuna karar verdik. Kamera dinamik olarak etkinleştirilebilir/devre dışı bırakılabilir bağlam, zaman ve başka kriterlere göre değişiyor. Android 4.0 sürümünde kullanıma sunuldu.

Diğer özellikler

Cihaz, yukarıdaki tabloda listelenen politikaları desteklemenin yanı sıra, Yönetim API'si aşağıdakileri yapmanıza olanak tanır:

  • Kullanıcıdan yeni bir şifre belirlemesini isteyin.
  • Cihazı hemen kilitleyin.
  • Cihazdaki verileri temizleyin (yani, cihazı fabrika varsayılan ayarlarına geri yükleyin).

Örnek uygulama

Bu sayfada kullanılan örnekler Device Management API'ye dayalıdır. örneği ( Android SDK Manager) ve sisteminizde şu şekilde bulunur: <sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java

Örnek uygulama, cihaz yöneticisi özelliklerinin demosunu sunmaktadır. Kullanıcılara Cihaz yönetimi uygulamasını etkinleştirmelerini sağlayan bir kullanıcı arayüzüyle. Bir kez uygulamayı etkinleştirdiklerinde, kullanıcı arayüzündeki düğmeleri şunları yapabilirsiniz:

  • Şifre kalitesini ayarlayın.
  • Kullanıcının şifresiyle ilgili olarak minimum uzunluk, minimum şifre sayısı gibi bir sayı yazın.
  • Şifreyi belirleyin. Şifre, sistem bir hata döndürür.
  • Cihaz silinmeden önce kaç başarısız şifre denemesinin gerçekleşebileceğini ayarlayın (yani fabrika ayarlarına geri yüklenir).
  • Şifrenin ne kadar süreyle geçerli olacağını ayarlayın.
  • Şifre geçmişi uzunluğunu ayarlayın (uzunluk, geçmişte depolanan eski şifrelerin sayısını belirtir). Bu, kullanıcıların bir öğeyi tekrar son n şifreden birini kullanıyor.
  • Cihaz destekliyorsa, depolama alanının şifrelenmesi gerektiğini belirtin.
  • Cihazdan önce geçebilecek maksimum etkin olmayan süreyi ayarlayın kilitlenir.
  • Cihazı hemen kilitleyin.
  • Cihazdaki verileri temizleyin (yani, fabrika ayarlarını geri yükleyin).
  • Kamerayı devre dışı bırakın.

Şekil 1. Örnek uygulamanın ekran görüntüsü

Cihaz yönetimi uygulaması geliştirme

Sistem yöneticileri, uygulama yazmak için Cihaz Yönetimi API'sini kullanabilir da dahil olmak üzere, uzaktan/yerel cihaz güvenliği politikasının zorunlu kılınmasını zorunlu kılar. Bu bölüm cihaz yönetimi oluşturmak için gereken adımları özetler uygulamasını indirin.

Manifest'i oluşturma

Cihaz Yönetimi API'sini kullanmak için uygulamanın manifesto aşağıdakileri içermelidir:

Cihaz Yönetimi örnek manifestinden bir alıntıyı aşağıda bulabilirsiniz:

<activity android:name=".app.DeviceAdminSample"
            android:label="@string/activity_sample_device_admin">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.SAMPLE_CODE" />
    </intent-filter>
</activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"
        android:label="@string/sample_device_admin"
        android:description="@string/sample_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_sample" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

Unutmayın:

  • Aşağıdaki özellikler, örnek uygulamanın bulunduğu dize kaynaklarını belirtir ApiDemos/res/values/strings.xml Kaynaklar hakkında daha fazla bilgi için Uygulama Kaynakları.
    • android:label="@string/activity_sample_device_admin", kullanıcı tarafından okunabilen bir etiket olması gerekir.
    • android:label="@string/sample_device_admin", bu izin için kullanıcı tarafından okunabilir etiketi bulunmalıdır.
    • android:description="@string/sample_device_admin_description" şu anlama gelir: iznin kullanıcı tarafından okunabilen açıklaması Betimlemeler genelde daha uzun ve bilgilendirme amaçlı etiket.
  • android:permission="android.permission.BIND_DEVICE_ADMIN" , DeviceAdminReceiver alt sınıfında bulunması gereken bir izindir gerekir. Bu diğer uygulamaların cihaz yönetimi uygulamanızı kötüye kullanmasını önler.
  • android.app.action.DEVICE_ADMIN_ENABLED birincil , bir DeviceAdminReceiver alt sınıfının başarılı olması için bir cihazı yönetmesine izin verilen siteler. Bu ayar, kullanıcı şu özelliği etkinleştirdiğinde alıcı olarak ayarlanır: cihaz yönetimi uygulaması. Kodunuz genellikle onEnabled() Desteklenmek için alıcının ayrıca diğer uygulamaların da BIND_DEVICE_ADMIN iznini gerektirmesi kötüye kullanamazsınız.
  • Bir kullanıcı, cihaz yönetimi uygulamasını etkinleştirdiğinde alıcıya belirli bir sistemin yayınına yanıt olarak işlem gerçekleştirme izni etkinlikler. Uygun bir olay ortaya çıktığında uygulama bir politika uygulayabilir. Örneğin, Örneğin, kullanıcı politikaya uymayan yeni bir şifre ayarlamaya çalışırsa kullanıcılarınızdan farklı bir şifre seçmesini isteyebilir bir kontrol listesidir.
  • Uygulamanızı yayınladıktan sonra alıcı adını değiştirmekten kaçının. Dosyadaki ad manifest değişiklikleri nedeniyle, kullanıcılar uygulamayı güncellediğinde cihaz yöneticisi devre dışı bırakılır. Daha fazla bilgi edinmek için bkz. <receiver>.
  • android:resource="@xml/device_admin_sample". meta verilerde kullanılan güvenlik politikalarını açıklar. Meta veriler, verilerin DeviceAdminInfo sınıfı tarafından ayrıştırılan, cihaz yöneticisine özel bilgiler. İçeriği device_admin_sample.xml:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

Cihaz yönetimi uygulamanızı tasarlarken tüm politikaları, yalnızca uygulamanızla alakalı olanları içermelidir.

Manifest dosyası hakkında daha fazla bilgi edinmek için Android Geliştiricileri Kılavuzu'na bakın.

Kodu uygulama

Device Management API aşağıdaki sınıfları içerir:

DeviceAdminReceiver
Cihaz yönetimi bileşeni uygulamak için temel sınıf. Bu sınıf şunları sağlar: tarafından gönderilen ham intent eylemlerinin yorumlanmasını bahsedeceğim. Cihaz Yönetimi uygulamanız şunu içermelidir: DeviceAdminReceiver alt sınıf.
DevicePolicyManager
Bir cihazda zorunlu kılınan politikaları yönetmeye yönelik bir sınıf. Çoğu müşterisinin bu sınıf, kullanıcının erişebileceği bir DeviceAdminReceiver yayınlamış olmalıdır şu anda etkin. DevicePolicyManager, şununla ilgili politikaları yönetiyor: bir veya daha fazla DeviceAdminReceiver örneği
DeviceAdminInfo
Bu sınıf, meta verileri belirtmek için kullanılır bir cihaz yöneticisi bileşeni için kullanılır.

Bu sınıflar, tam işlevli bir cihaz yönetimi uygulaması için temel bilgileri sağlamaktadır. Bu bölümün geri kalanında, DeviceAdminReceiver ve Cihaz yönetimi uygulaması yazmak için DevicePolicyManager API'leri

DeviceAdminReceiver'ı Alt Sınıflandırma

Cihaz yönetimi uygulaması oluşturmak için alt sınıfa gitmeniz gerekir DeviceAdminReceiver DeviceAdminReceiver sınıfı belirli etkinlikler tetiklendiğinde tetiklenen bir dizi geri çağırmadan oluşur. meydana gelir.

Örnek uygulama, DeviceAdminReceiver alt sınıfında belirli bir mesaja yanıt olarak bir Toast bildirimi görüntüler etkinlikler. Örnek:

Kotlin

class DeviceAdminSample : DeviceAdminReceiver() {

    private fun showToast(context: Context, msg: String) {
        context.getString(R.string.admin_receiver_status, msg).let { status ->
            Toast.makeText(context, status, Toast.LENGTH_SHORT).show()
        }
    }

    override fun onEnabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_enabled))

    override fun onDisableRequested(context: Context, intent: Intent): CharSequence =
            context.getString(R.string.admin_receiver_status_disable_warning)

    override fun onDisabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_disabled))

    override fun onPasswordChanged(context: Context, intent: Intent, userHandle: UserHandle) =
            showToast(context, context.getString(R.string.admin_receiver_status_pw_changed))
...
}

Java

public class DeviceAdminSample extends DeviceAdminReceiver {

    void showToast(Context context, String msg) {
        String status = context.getString(R.string.admin_receiver_status, msg);
        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_enabled));
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return context.getString(R.string.admin_receiver_status_disable_warning);
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_disabled));
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent, UserHandle userHandle) {
        showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
    }
...
}

Uygulamayı etkinleştirme

Bir cihaz yönetimi uygulamasının işlemesi gereken önemli etkinliklerden biri, etkinleştiriliyor. Kullanıcı, uygulamayı şunun için açıkça etkinleştirmelidir: politikaların uygulanması gerekir. Kullanıcı uygulamayı etkinleştirmemeyi seçerse öğe cihazda kalmaya devam eder ancak politikaları uygulanmaz ve kullanıcı, uygulamanın avantajından yararlanabilirsiniz.

Uygulamayı etkinleştirme süreci, kullanıcı bir işlem gerçekleştirdiğinde başlar. ACTION_ADD_DEVICE_ADMIN tetikleyen işlem isteyebilirsiniz. Bu durum, kullanıcı Etkinleştir düğmesini Yönetici onay kutusunu işaretleyin.

Kullanıcı Yöneticiyi Etkinleştir onay kutusunu tıkladığında kullanıcının cihaz yönetimi uygulamasını etkinleştirmesini isteyen değişiklikler (şekilde gösterildiği gibi) 2.

Şekil 2. Örnek uygulama: Uygulamayı etkinleştirme

Aşağıda, kullanıcı Yöneticiyi Etkinleştir onay kutusunu tıkladığında yürütülecek kod verilmiştir. Bu, kullanıcı izninin onPreferenceChange(). geri arama. Bu geri çağırma, Preference değeri kullanıcı tarafından değiştirildiğinde ve ayarlanmak ve/veya devam etmek üzere olduğunda çağrılır. Kullanıcı uygulamayı etkinleştiriyorsa kullanıcının cihaz yönetimi uygulamasını etkinleştirmesini isteyen değişiklikler (şekilde gösterildiği gibi) 2. Aksi takdirde cihaz yönetimi uygulaması devre dışı bırakılır.

Kotlin

override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
    if (super.onPreferenceChange(preference, newValue)) return true
    val value = newValue as Boolean
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply {
                    putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample)
                    putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                            activity.getString(R.string.add_admin_extra_app_text))
                }
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN)
                // return false - don't update checkbox until we're really active
                return false
            } else {
                dpm.removeActiveAdmin(deviceAdminSample)
                enableDeviceCapabilitiesArea(false)
                adminActive = false
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value)
    }
    return true
}

Java

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
    if (super.onPreferenceChange(preference, newValue)) {
        return true;
    }
    boolean value = (Boolean) newValue;
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample);
                intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                        activity.getString(R.string.add_admin_extra_app_text));
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
                // return false - don't update checkbox until we're really active
                return false;
            } else {
                dpm.removeActiveAdmin(deviceAdminSample);
                enableDeviceCapabilitiesArea(false);
                adminActive = false;
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value);
    }
    return true;
}

Çizgi intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample), mDeviceAdminSample (yani bir DeviceAdminReceiver bileşeni) hedef politikadır. Bu satır, Şekil 2'de gösterilen ve kullanıcıları cihaz yöneticisini sisteme ekleyerek (veya reddetmesine izin verebilirsiniz).

Uygulamanın cihaz yönetimi uygulamasının etkinleştirildiğini onaylar. Bu, uygulamanın etkin. Bunun için DevicePolicyManager yöntemini kullanır isAdminActive(). DevicePolicyManager isAdminActive() yöntemi DeviceAdminReceiver alır bileşenini bağımsız değişkeni olarak kullanın:

Kotlin

private lateinit var dpm: DevicePolicyManager
...
private fun isActiveAdmin(): Boolean = dpm.isAdminActive(deviceAdminSample)

Java

DevicePolicyManager dpm;
...
private boolean isActiveAdmin() {
    return dpm.isAdminActive(deviceAdminSample);
}

Politikaları yönetme

DevicePolicyManager, politikaları yönetmek için herkese açık bir sınıftır zorunlu tutulamaz. DevicePolicyManager, birinin politikalarını yönetiyor veya daha fazla DeviceAdminReceiver örneği.

DevicePolicyManager için şu şekilde herkese açık kullanıcı adı verilir:

Kotlin

dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager

Java

DevicePolicyManager dpm =
    (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

Bu bölümde, DevicePolicyManager ile performans artırma idari görevler:

Şifre politikaları ayarlama

DevicePolicyManager, cihaz şifresi politikası. Device Management API'de şifre yalnızca Ekran kilidi. Bu bölümde şifreyle ilgili sık yapılan görevler açıklanmaktadır.

Cihaz için şifre ayarlayın

Bu kodda, kullanıcıdan şifre ayarlamasını isteyen kullanıcı arayüzü görüntülenir:

Kotlin

Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent ->
    startActivity(intent)
}

Java

Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
Şifre kalitesini ayarlama

Şifre kalitesi aşağıdaki DevicePolicyManager sabit değerlerinden biri olabilir:

PASSWORD_QUALITY_ALPHABETIC
Kullanıcı bir En az alfabetik (veya diğer semboller) karakter içeren şifre.
PASSWORD_QUALITY_ALPHANUMERIC
Kullanıcı bir sayılardan en az ikisini sayısal ve alfabetik olarak içeren şifre (veya diğer sembol) karakterlerinin de içinde kalması gerekir.
PASSWORD_QUALITY_NUMERIC
Kullanıcı bir şifre girmelidir içeren bir e-posta adresi ekleyin.
PASSWORD_QUALITY_COMPLEX
Kullanıcı en az bir harf, bir rakam ve bir rakam içeren bir şifre girmiş olmanız gerekir. bir sembolü var.
PASSWORD_QUALITY_SOMETHING
politika için bir tür çok önemli, ama ne olduğu önemli.
PASSWORD_QUALITY_UNSPECIFIED
. Politikada bu şifreyle ilgili herhangi bir gereksinim yoktur.

Örneğin, şifre politikasını alfanümerik bir şifre gerektirecek şekilde şu şekilde ayarlayabilirsiniz:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
Şifre içerik gereksinimlerini ayarlama

Android 3.0 sürümünden itibaren DevicePolicyManager sınıfı şifrenin içeriğinde ince ayar yapmanıza olanak tanıyan yöntemler içerir. Örneğin, Örneğin, şifrelerin en az şu ifadeyi içermesi gerektiğini belirten bir politika n harfi için büyük harf kullanın. Şifrelerde ince ayar yapma yöntemleri içerik:

Örneğin, bu snippet şifrede en az 2 büyük harf olması gerektiğini belirtir:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwMinUppercase = 2
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwMinUppercase = 2;
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase);
Minimum şifre uzunluğunu belirleyin

Bir şifrenin en azından belirtilen minimum sayı olması gerektiğini belirtebilirsiniz seçeceğiz. Örnek:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwLength: Int = ...
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwLength;
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength);
Maksimum başarısız şifre girişi deneme sayısını ayarlayın

cihaz temizlendiğinde (fabrika ayarlarına sıfırlanır). Örnek:

Kotlin

val dPM:DevicePolicyManager
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val maxFailedPw: Int = ...
...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int maxFailedPw;
 ...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw);
Şifre süre sonu zaman aşımını ayarla

Android 3.0 sürümünden itibaren, setPasswordExpirationTimeout(). şifre süresinin ne zaman dolacağını belirleme yöntemidir. Cihaz yöneticisi geçerlilik zaman aşımını belirlediği andan itibaren delta cinsinden ifade edilir. Örnek:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwExpiration: Long = ...
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
long pwExpiration;
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
Şifreyi geçmişe göre sınırlayın

Android 3.0 sürümünden itibaren, setPasswordHistoryLength(). sınırlama amacıyla kullanılan bir yöntem olan eski şifreleri yeniden kullanma olanağı. Bu yöntem bir uzunluk kaç eski olduğunu belirten emin olun. Bu politika etkin olduğunda, kullanıcılar yeni son n şifreyle eşleşen şifre olmalıdır. Bu durum, ve aynı şifreyi tekrar tekrar kullanmasını engeller. Bu politika genellikle birlikte setPasswordExpirationTimeout(), Böylece, kullanıcılar .

Örneğin, bu snippet kullanıcıların son 5 şifresini yeniden kullanmasını yasaklar:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwHistoryLength = 5
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwHistoryLength = 5;
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength);

Cihaz kilidi ayarlayın

Şu tarihten önce oluşabilecek maksimum işlem süresi: cihaz kilitlerini etkinleştirin. Örnek:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val timeMs: Long = 1000L * timeout.text.toString().toLong()
...
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
long timeMs = 1000L*Long.parseLong(timeout.getText().toString());
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);

Ayrıca programlı bir şekilde cihazın hemen kilitlenmesini de söyleyebilirsiniz:

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.lockNow()

Java

DevicePolicyManager dpm;
dpm.lockNow();

Veri silme işlemi gerçekleştir

DevicePolicyManager yöntemini kullanabilirsiniz Cihazı fabrika ayarlarına sıfırlamak için wipeData(). Faydalı cihazın kaybolması veya çalınması halinde gerçekleşebilir. Cihazı silme kararı genelde bir sonucudur. Örneğin, setMaximumFailedPasswordsForWipe() belirtirken cihaz, belirli sayıda başarısız şifre girişiminden sonra temizlenir.

Verileri aşağıdaki şekilde silebilirsiniz:

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.wipeData(0)

Java

DevicePolicyManager dpm;
dpm.wipeData(0);

wipeData() yöntemi parametresini, ek seçeneklerin bir bit maskesi olarak ayarlayabilirsiniz. Şu anda değer 0 olmalıdır.

Kamerayı devre dışı bırak

Android 4.0 sürümünden itibaren kamerayı devre dışı bırakabilirsiniz. Bunun kalıcı bir devre dışı bırakma işlemi olması gerekmediğini unutmayın. Kamera, bağlama, zamana ve diğer ölçütlere göre dinamik olarak etkinleştirilebilir/devre dışı bırakılabilir.

Kameranın devre dışı bırakılıp kapatılmayacağını kontrol etmek için setCameraDisabled() yöntemini çağırın. Örneğin, bu snippet, kamerayı bir onay kutusu ayarına göre etkinleştirilecek veya devre dışı bırakacak şekilde ayarlar:

Kotlin

private lateinit var disableCameraCheckbox: CheckBoxPreference
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked)

Java

private CheckBoxPreference disableCameraCheckbox;
DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked());

Depolama alanı şifreleme

Android 3.0 sürümünden itibaren, setStorageEncryption(). yöntemini kullanın.

Örnek:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setStorageEncryption(deviceAdminSample, true)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setStorageEncryption(deviceAdminSample, true);

Depolama alanı şifrelemesinin nasıl etkinleştirileceğine ilişkin tam bir örnek için Device Management API örneğine bakın.

Ek kod örnekleri

Android AppRestrictionImplementr ve DeviceOwner değerleridir örnekler, bu sayfada ele alınan API'lerin kullanımını daha ayrıntılı şekilde gösterir.