( Düzenle: Bazı testlerden sonra güncellendi)
Kontrol son belgelere .
Bu özelliğe şimdi Ekran sabitleme deniyor gibi görünüyor ve Uygulamanın cihaz sahibi olması gerekmiyor. Cihaz sahibi ayarlanmamışsa kullanıcıdan kabul etmesi istenir. Ancak, aşağıda belirtilen kiosk kullanımı için bununla ilgili sorunlar var.
Ekran sabitlemeyi etkinleştirmenin iki yolu vardır:
Manuel olarak: Kullanıcılar Ayarlar> Güvenlik> Ekran Sabitleme'de ekran sabitlemeyi etkinleştirebilir ve sonlar ekranındaki yeşil raptiye simgesine dokunarak sabitlemek istedikleri görevleri seçebilirler. Programlı olarak: Ekran sabitlemeyi programlı olarak etkinleştirmek için uygulamanızdan startLockTask () öğesini arayın. İsteyen uygulama bir cihaz sahibi değilse kullanıcıdan onay istenir. Bir cihaz sahibi uygulaması, uygulamaların kullanıcı onay adımı olmadan sabitlenebilmesini sağlamak için setLockTaskPackages () yöntemini çağırabilir.
Ekran sabitlemeyi programlı olarak (cihaz sahibi olmayan Uygulama) veya cihazdaki sondaki iğneyi kullanarak etkinleştirirseniz, aşağıdaki davranışı elde edersiniz:
Kullanıcıya ekran sabitlemeyi etkinleştirmek isteyip istemediklerini ve çıkmak için bir parola isteyip istemediklerini soran bir iletişim kutusu görüntülenir. Evet'e basarlarsa durum çubuğu ve bildirimler kaybolur, geri, ev ve son kullanılanlar düğmeleri kaybolmaz. Eve veya son işaretlere dokunmak, kullanıcının ekran sabitlemesinden nasıl çıkacağını bildiren bir tost görünmesini sağlar.
Kullanıcı daha sonra basılı tutabilir ve ekran sabitlemeden çıkmak için geri çekilebilir. Kullanıcı bir şifre talep etmeyi seçerse, doğrudan kilit ekranına yönlendirilir. Bu davranış, bir kiosk imo için uygun olmadığı anlamına gelir. Kiosk kullanıcılarının kilit ekranına bakması çok kolay olduğu için.
Uygun bir kiosk moduna geçmek için cihaz sahibini ayarlamamız gerekir. Google'ın dokümantasyonu, bunu NFC ile yapmanız gerektiğini söylüyor:
Bir cihaz sahibini dağıtmak ve etkinleştirmek için, cihaz öngörülmemiş durumdayken bir programlama uygulamasından cihaza bir NFC veri aktarımı gerçekleştirmelisiniz.
Bunu yapmak için NFC kullanmak biraz karmaşık görünüyor (ya bir cihazda NFC yoksa?) Ben kimse henüz NFC tarafından cihaz sahibini ayarlama hakkında bilgi verebilir eğer bu henüz araştırmadım? Şimdi sorunuzun ana noktası haline geliyor. (yani, cihaz sahibini köklü olmayan bir cihazda ayarlamak)
Ancak, bir cihazı köklendirirseniz davranışın beklendiği gibi olduğunu doğrulamak için cihaz sahibini Google'ın önceki talimatlarına göre (bir device_owner.xml ekleyerek) burada belirttiğim gibi ayarlayabilirsiniz
Artık Uygulamayı düzgün bir şekilde kilitleyebilirsiniz, kullanıcının kabul etmesi için hiçbir iletişim kutusu görünmez, sonlandırmalar ve ana sayfa düğmesi kaybolur ve Uygulamanızın kilidi açılmadıkça kullanıcı Uygulamadan çıkamaz. Uygun bir kiosk modu. Bunu en son Lollipop yapısına sahip bir Nexus 7 2013'te test ettim.
Aşağıdaki kod parçası kilidi açar:
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);
if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
Log.d(TAG, "isDeviceOwnerApp: YES");
String[] packages = {this.getPackageName()};
mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
Log.d(TAG, "isDeviceOwnerApp: NO");
}
if (mDPM.isLockTaskPermitted(this.getPackageName())) {
Log.d(TAG, "isLockTaskPermitted: ALLOWED");
startLockTask();
} else {
Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}