Cara mengaktifkan penguncian tugas di perangkat produksi Android 5.0

12

Pertanyaan StackOverflow ini mengeksplorasi cara mengaktifkan aplikasi pemilik perangkat, dan dengan demikian mode kios, dalam pratinjau pengembang Android L. Karena metode ini membutuhkan build Android debebug, me-rooting perangkat, dan menyalin file XML ke sistem file root, tampaknya tidak cocok untuk penyebaran massal perangkat Android fungsi tunggal di dalam perusahaan.

Bagaimana aplikasi pemilik perangkat akan diinstal pada perangkat Android L produksi?

Adrian Cox
sumber
Apakah Anda tahu masalahnya?
KOTIOS
Terima kasih @Spynet - yang tampaknya merupakan ringkasan solusi yang paling lengkap.
Adrian Cox
1
lihat di sini untuk panduan yang baik dengan src: objectpartners.com/2014/11/04/...
Hayden Thring

Jawaban:

14

( Edit: Diperbarui setelah beberapa pengujian lagi)

Periksa dokumentasi terbaru .

Fitur ini tampaknya disebut Screen pinning now, dan App tidak harus menjadi pemilik perangkat. Jika pemilik perangkat tidak disetel, pengguna akan diminta untuk menerima. Tetapi ada masalah dengan ini untuk penggunaan kios, yang disebutkan di bawah ini.

Ada dua cara untuk mengaktifkan penyematan layar:

Secara manual: Pengguna dapat mengaktifkan penyematan layar di Pengaturan> Keamanan> Penyematan Layar, dan memilih tugas yang ingin disematkan dengan menyentuh ikon pin hijau di layar terbaru. Secara terprogram: Untuk mengaktifkan pinning layar secara terprogram, panggil startLockTask () dari aplikasi Anda. Jika aplikasi yang meminta bukan pemilik perangkat, pengguna diminta untuk konfirmasi. Aplikasi pemilik perangkat dapat memanggil metode setLockTaskPackages () untuk memungkinkan aplikasi dapat di-pinnable tanpa langkah konfirmasi pengguna.

Jika Anda mengaktifkan pinning layar secara terprogram (bukan App pemilik perangkat) atau pada perangkat menggunakan pin di recents Anda mendapatkan perilaku berikut:

Sebuah dialog muncul menanyakan pengguna apakah mereka ingin mengaktifkan penyematan layar dan apakah mereka ingin meminta kata sandi untuk keluar. Jika mereka menekan ya bilah status dan pemberitahuan menghilang, kembali, tombol home dan baru-baru ini TIDAK hilang. Mengetuk di rumah atau baru-baru ini membuat bersulang muncul menginformasikan pengguna bagaimana keluar dari menyematkan layar.

Pengguna kemudian dapat menahan dan mundur untuk keluar dari menyematkan layar. Jika pengguna memilih untuk meminta kata sandi, mereka akan ditendang langsung ke layar kunci. Perilaku ini berarti tidak cocok untuk imo kios. Karena terlalu mudah bagi pengguna kios untuk melihat layar kunci.

Untuk mendapatkan mode kios yang tepat, kita perlu mengatur pemilik perangkat. Dokumentasi Google mengatakan Anda perlu melakukan ini dengan NFC:

Untuk menggunakan dan mengaktifkan pemilik perangkat, Anda harus melakukan transfer data NFC dari aplikasi pemrograman ke perangkat saat perangkat dalam kondisi yang tidak disediakan.

Menggunakan NFC untuk melakukan ini tampaknya agak rumit (bagaimana jika perangkat tidak memiliki NFC?). Saya belum menyelidiki ini jadi apakah ada yang bisa memberikan info bagaimana Anda mengatur pemilik perangkat dengan NFC? Yang sekarang menjadi poin utama dari pertanyaan Anda. (yaitu mengatur pemilik perangkat pada perangkat yang tidak di-rooting)

Tetapi untuk mengonfirmasi perilaku seperti yang diharapkan jika Anda melakukan root pada perangkat Anda dapat mengatur pemilik perangkat sesuai instruksi Google sebelumnya (menambahkan device_owner.xml) seperti yang saya sebutkan di sini

Sekarang Anda dapat mengunci Aplikasi dengan benar, tidak ada dialog yang muncul bagi pengguna untuk menerima, ketika diaktifkan, tombol baru-baru ini dan rumah menghilang dan pengguna tidak dapat meninggalkan Aplikasi kecuali Aplikasi Anda membuka kunci sendiri. Mode kios yang tepat. Saya telah menguji ini pada Nexus 7 2013 dengan build Lollipop terbaru.

Cuplikan berikut menyalakan kunci:

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");
}
tagy22
sumber
Saya pikir ini adalah jawaban terbaik yang tersedia saat ini. Langkah NFC tetap menjadi misteri, tetapi merupakan pertanyaan yang jauh lebih sempit.
Adrian Cox
Saya telah mencoba untuk membuat langkah NFC bekerja tetapi tidak berhasil, saya memulai pertanyaan tentang ini di sini . Juga Ada permintaan fitur dengan Google untuk meningkatkan pinning layar untuk penggunaan kios di sini
tagy22
1

Saya tidak dapat mengomentari jawaban yang sedikit mengganggu tetapi tambahan untuk jawaban tagy22 yang dapat Anda gunakan dpmuntuk mengatur pemilik perangkat. Lebih detail di sini .

Troy Patrick
sumber
1
dpmtidak akan menyelesaikan pekerjaan jika akun (seperti akun Google) diatur di perangkat.
Firelord
Akankah NFC dalam kasus itu? Saya mendapat kesan bahwa pemilik perangkat harus diatur sebelum periode akun ditambahkan.
Troy Patrick