Panduan ini menjelaskan cara mengembangkan pengontrol kebijakan perangkat (DPC) untuk perangkat Android dalam deployment perusahaan Android. Aplikasi DPC, yang sebelumnya dikenal sebagai pengontrol kebijakan kerja, mengontrol sistem dan kebijakan perangkat lokal aplikasi pada perangkat.
Tentang DPC
Dalam deployment Android {i>enterprise<i}, sebuah perusahaan mempertahankan kendali atas berbagai aspek perangkat pengguna, seperti mengisolasi berbagai aspek informasi dari pengguna data pribadi, pra-konfigurasi aplikasi yang disetujui untuk lingkungan, atau menonaktifkan kemampuan perangkat (misalnya, kamera).
Sebagai EMM, Anda mengembangkan aplikasi DPC yang dapat digunakan oleh pelanggan Anda di bersama dengan konsol EMM dan server tertentu. Pelanggan Anda men-deploy DPC ke perangkat pengguna yang mereka kelola. DPC bertindak sebagai jembatan antara konsol EMM (dan server) dan perangkat. Admin menggunakan konsol EMM untuk melakukan berbagai tugas, termasuk mengkonfigurasi pengaturan perangkat dan aplikasi.
DPC membuat dan mengelola profil kerja di perangkat tempat DPC diinstal. Profil kerja mengenkripsi informasi terkait pekerjaan dan memisahkannya dari pengguna data dan aplikasi pribadi. Sebelum membuat profil kerja, DPC juga dapat menyediakan Akun Google Play terkelola untuk digunakan di perangkat.
Panduan ini menunjukkan cara mengembangkan DPC yang dapat membuat dan mengelola profil kerja.
Support Library DPC untuk EMM
DPC Support Library untuk EMM terdiri dari kelas utilitas dan bantuan yang memfasilitasi penyediaan dan pengelolaan perangkat Android di perusahaan lingkungan fleksibel App Engine. Dengan library ini, Anda dapat memanfaatkan fitur-fitur penting dalam Aplikasi DPC:
- Dukungan penyediaan Akun Google Play terkelola: Penyediaan terkelola Akun Google Play dari aplikasi DPC mengharuskan Google Play dan Google Aplikasi layanan Play memenuhi persyaratan versi minimum. Namun, memperbarui aplikasi bisa menjadi rumit. Pustaka dukungan DPC menangani pembaruan serta memastikan kompatibilitas dengan update mendatang untuk aplikasi Google Proses penyediaan Akun Play. Lihat Akun Google Play terkelola menyediakan dukungan penyediaan untuk detailnya.
- Dukungan Konfigurasi Terkelola: Menggunakan Play EMM API untuk menangani konfigurasi terkelola untuk aplikasi yang disetujui adalah cara termudah untuk menerapkan konfigurasi terkelola di DPC Anda. Dukungan DPC Library memungkinkan Anda mendelegasikan tugas penerapan terkelola ke Google Play konfigurasi (sebelumnya, pembatasan aplikasi) yang ditetapkan oleh admin menggunakan EMM konsol. Menggunakan Play EMM API untuk menangani konfigurasi terkelola memungkinkan konfigurasi aplikasi yang akan diterapkan secara atomik selama instalasi. Lihat Menerapkan konfigurasi terkelola ke aplikasi kerja untuk mendapatkan informasi selengkapnya tentang cara mengaktifkan kemampuan ini dalam DPC.
Ikuti langkah-langkah di bawah ini untuk mendownload library. Tugas yang dijelaskan dalam panduan ini mengasumsikan penggunaan {i> Support Library<i} DPC.
Mendownload Support Library DPC
Untuk menggunakan Support Library DPC, download library dari komunitas Penyedia EMM Android Enterprise. Anda harus menambahkan library ke file build.gradle dan menangani dependensi saat Anda membangun aplikasi DPC. Misalnya, library memerlukan 11.4.0 Library klien autentikasi Layanan Google Play.
- Tambahkan library ke file
build.gradle
:
Groovy
implementation(name:'dpcsupport-yyyymmdd', ext:'aar')
Kotlin
implementation(name = "dpcsupport-yyyymmdd", ext = "aar")
- Tambahkan 11.4.0
Library klien autentikasi Layanan Google Play ke file build.gradle:
Groovy
implementation 'com.google.android.gms:play-services-auth:11.4.0'
Kotlin
implementation("com.google.android.gms:play-services-auth:11.4.0")
Library ini memerlukan izin tertentu agar dapat dijalankan, jadi Anda harus menambahkannya ke manifes aplikasi DPC saat Anda mengupload ke Google Play:
<uses-permission android:name= "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> <uses-permission android:name= "android.permission.GET_ACCOUNTS"/> <uses-permission android:name= "android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name= "android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Selain langkah-langkah penyiapan dan penerapan awal ini, Anda juga harus menginisialisasi fungsi pustaka tertentu di kode DPC, tergantung pada kemampuan yang ingin Anda terapkan. Detailnya akan disertakan dalam bagian di bawah ini.
Buat DPC
Bangun DPC pada model yang sudah ada dan digunakan untuk aplikasi administrasi perangkat.
Secara khusus, aplikasi Anda harus membuat subclass
DeviceAdminReceiver
(class dari android.app.admin
) seperti yang dijelaskan dalam
Administrasi Perangkat.
Buat profil kerja
Untuk contoh yang menunjukkan cara membuat profil kerja dasar, lihat BasicManagedProfile di GitHub.
Untuk membuat profil kerja di perangkat yang sudah memiliki profil pribadi,
pertama cari tahu apakah perangkat itu dapat mendukung profil kerja, dengan memeriksa
keberadaan
Fitur sistem FEATURE_MANAGED_USERS
:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_MANAGED_USERS)) { // This device does not support work profiles! }
Jika perangkat mendukung profil kerja, buat profil kerja dengan mengirimkan intent dengan ACTION_PROVISION_MANAGED_PROFILE tindakan. (Dalam beberapa dokumentasi, profil terkelola adalah istilah umum yang memiliki arti yang sama dengan profil kerja dalam konteks Android di perusahaan.) Sertakan nama paket admin perangkat sebagai tambahan:
Kotlin
val provisioningActivity = getActivity() // You'll need the package name for the DPC app. val myDPCPackageName = "com.example.myDPCApp" // Set up the provisioning intent val adminComponent = ComponentName(provisioningActivity.applicationContext, MyAdminReceiver::class.java) provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()) if (provisioningIntent.resolveActivity(provisioningActivity.packageManager) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE) provisioningActivity.finish() }
Java
Activity provisioningActivity = getActivity(); // You'll need the package name for the DPC app. String myDPCPackageName = "com.example.myDPCApp"; // Set up the provisioning intent Intent provisioningIntent = new Intent("android.app.action.PROVISION_MANAGED_PROFILE"); ComponentName adminComponent = new ComponentName(provisioningActivity.getApplicationContext(), MyAdminReceiver.class); provisioningIntent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME, adminComponent.flattenToString()); if (provisioningIntent.resolveActivity(provisioningActivity.getPackageManager()) == null) { // No handler for intent! Can't provision this device. // Show an error message and cancel. } else { // REQUEST_PROVISION_MANAGED_PROFILE is defined // to be a suitable request code startActivityForResult(provisioningIntent, REQUEST_PROVISION_MANAGED_PROFILE); provisioningActivity.finish(); }
Sistem akan merespons intent ini dengan melakukan hal berikut:
- Memverifikasi bahwa perangkat dienkripsi. Jika tidak, sistem akan meminta pengguna untuk mengenkripsi perangkat sebelum melanjutkan.
- Membuat profil kerja.
- Menghapus aplikasi yang tidak diperlukan dari profil kerja.
- Menyalin aplikasi DPC ke profil kerja dan menetapkan DPC itu sendiri sebagai pemilik profil.
Ganti
onActivityResult()
menjadi
lihat apakah penyediaan berhasil:
Kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data) } }
Java
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // Check if this is the result of the provisioning activity if (requestCode == REQUEST_PROVISION_MANAGED_PROFILE) { // If provisioning was successful, the result code is // Activity.RESULT_OK if (resultCode == Activity.RESULT_OK) { // Work profile created and provisioned. } else { // Provisioning failed. } return; } else { // This is the result of some other activity. Call the superclass. super.onActivityResult(requestCode, resultCode, data); } }
Selesai mengaktifkan profil kerja
Ketika profil telah disediakan, sistem akan memanggil DPC
metode
DeviceAdminReceiver.onProfileProvisioningComplete()
aplikasi. Ganti
metode callback ini untuk menyelesaikan pengaktifan profil kerja.
DeviceAdminReceiver.onProfileProvisioningComplete()
standar
implementasi callback akan melakukan hal berikut:
- Memverifikasi bahwa perangkat mematuhi kebijakan perangkat EMM, seperti yang dijelaskan dalam Menyiapkan kebijakan perangkat.
- Mengaktifkan aplikasi sistem yang dibuat admin
yang tersedia dalam profil kerja menggunakan
DevicePolicyManager.enableSystemApp()
. - Jika perangkat menggunakan Google Play terkelola, tambahkan akun yang sesuai ke
profil kerja sehingga aplikasi yang disetujui dapat diinstal di perangkat.
- Akun Google Play Terkelola: Lihat Memastikan berfungsi untuk Akun Google Play terkelola dan Menambahkan Akun Google Play terkelola untuk mengetahui detailnya.
- Akun Google: Gunakan
AccountManager.addAccount()
.
Mengaktifkan profil kerja
Setelah Anda menyelesaikan tugas ini, panggil {i>device policy manager
Metode
setProfileEnabled()
untuk mengaktifkan profil kerja:
Kotlin
// Get the device policy manager val myDevicePolicyMgr = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val componentName = myDeviceAdminReceiver.getComponentName(this) // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile") // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName)
Java
// Get the device policy manager DevicePolicyManager myDevicePolicyMgr = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); ComponentName componentName = myDeviceAdminReceiver.getComponentName(this); // Set the name for the newly created work profile. myDevicePolicyMgr.setProfileName(componentName, "My New Work Profile"); // ...and enable the profile myDevicePolicyMgr.setProfileEnabled(componentName);
Menyiapkan kebijakan perangkat
Aplikasi DPC menerapkan kebijakan perangkat seperti yang ditetapkan oleh admin untuk memenuhi kebutuhan dan kendala organisasi. Misalnya, kebijakan keamanan mengharuskan perangkat untuk dikunci setelah beberapa kali gagal memasukkan {i>password<i}. DPC mengkueri konsol EMM untuk kebijakan saat ini, lalu menerapkan kebijakan tersebut menggunakan Perangkat Administrasi API.
Untuk informasi tentang cara menerapkan kebijakan perangkat, lihat Kebijakan kami.
Terapkan konfigurasi terkelola ke aplikasi kerja
Konfigurasi terkelola memungkinkan Anda memberi pelanggan kemampuan untuk melakukan pra-konfigurasi aplikasi yang telah disetujui untuk deployment, dan memperbarui aplikasi dengan mudah ketika konfigurasi perlu diubah. Mengonfigurasi aplikasi sebelum memastikan bahwa keamanan organisasi dan kebijakan lainnya terpenuhi setelah menginstal aplikasi pada perangkat target.
Kemampuan aplikasi ditentukan oleh developer aplikasi dalam skema XML ( skema konfigurasi terkelola) yang menyertai aplikasi saat diupload ke Google Play (developer aplikasi, lihat Menyiapkan Konfigurasi Terkelola untuk detailnya).
Anda mengambil skema ini dari aplikasi untuk ditampilkan kepada admin pelanggan Anda di konsol EMM, sediakan UI yang memungkinkan berbagai opsi yang ditentukan tampilan skema, dan memungkinkan admin melakukan pra-konfigurasi setelan aplikasi. Hasil konfigurasi terkelola yang disetel admin biasanya yang disimpan di server EMM yang kemudian menggunakan Play EMM API untuk disetel Konfigurasi terkelola untuk perangkat atau Managedconfigurationsforuser. Lihat Konfigurasi Terkelola di Play untuk mengetahui detailnya.
Konfigurasi terkelola dapat diterapkan ke aplikasi menggunakan Play EMM API (pendekatan yang disarankan) atau langsung dari DPC (dijelaskan di Menerapkan konfigurasi terkelola langsung dari DPC). Menggunakan Play EMM API memiliki beberapa keuntungan, termasuk mudahnya implementasi karena Anda dapat menggunakan Library Dukungan DPC untuk menyederhanakan tugas DPC. Selain itu, Play EMM API:
- Menyetel konfigurasi secara atomik saat aplikasi baru diinstal, sehingga memastikan aplikasi siap saat pertama kali pengguna meluncurkan aplikasi.
- Memungkinkan Anda mengelola konfigurasi per pengguna, sehingga Anda dapat menghindari pemantauan penyediaan pada basis per perangkat.
Terapkan konfigurasi terkelola menggunakan API EMM Play
Agar dapat menggunakan Play EMM API untuk konfigurasi terkelola, DPC harus mengizinkan Google Play untuk menyetel konfigurasi. DPC Support Library menangani hal ini tugas untuk Anda dengan mem-proxy konfigurasi yang dikirim oleh Google Play.
Untuk menggunakan Play EMM API, download DPC Support Library lalu mengaktifkan dukungan konfigurasi terkelola di DPC.
Aktifkan dukungan Konfigurasi Terkelola di DPC Anda
Impor kelas ini di DPC:
com.google.android.apps.work.dpcsupport.ManagedConfigurationsSupport
Melakukan inisialisasi library konfigurasi terkelola. Dalam contoh ini, "admin" bernilai ComponentName DeviceAdminReceiver.
Kotlin
var managedConfigurationsSupport = ManagedConfigurationsSupport(context, admin)
Java
ManagedConfigurationsSupport managedConfigurationsSupport = new ManagedConfigurationsSupport(context, admin);
Aktifkan konfigurasi terkelola:
Kotlin
managedConfigurationsSupport.enableManagedConfigurations()
Java
managedConfigurationsSupport.enableManagedConfigurations();
Dengan menginisialisasi library ini di DPC, Anda dapat menggunakan Google Play EMM API di EMM Anda konsol dan server untuk menerapkan konfigurasi terkelola ke aplikasi yang disetujui, bukan mengkodekan tugas-tugas ini langsung di DPC. Lihat Konfigurasi Terkelola melalui Play untuk mengetahui detailnya.
Terapkan konfigurasi terkelola langsung dari DPC
Untuk mengubah setelan konfigurasi aplikasi langsung dari DPC, panggil metode Metode DeviceDependencies.setApplicationRestrictions() dan lulus untuk aplikasi DPC DeviceAdminReceiver, nama paket aplikasi target, dan Bundle yang terdiri dari untuk konfigurasi aplikasi yang dikelola seperti yang ditetapkan oleh admin. Lihat Bagaimana Konsol DPC dan EMM berinteraksi dan Menyiapkan Konfigurasi Terkelola untuk mengetahui detailnya. Namun, perhatikan bahwa pendekatan alternatif ini untuk menerapkan konfigurasi tidak direkomendasikan dalam deployment Akun Google Play terkelola.
Penyediaan Akun Google Play Terkelola dukung
Library Dukungan DPC menyertakan dukungan untuk penyediaan Akun Google Play terkelola. Untuk menggunakan dukungan ini, Anda harus terlebih dahulu menginisialisasi lalu Anda dapat Memastikan lingkungan kerja dan Tambahkan Akun Google Play terkelola.
Melakukan inisialisasi Akun Google Play terkelola di DPC
Impor kelas ini di DPC:
com.google.android.apps.work.dpcsupport.AndroidForWorkAccountSupport
Melakukan inisialisasi library kompatibilitas penyediaan. Dalam contoh ini, “admin” adalah
ComponentName
dari
DeviceAdminReceiver
.
Kotlin
var androidForWorkAccountSupport = AndroidForWorkAccountSupport(context, admin)
Java
AndroidForWorkAccountSupport androidForWorkAccountSupport = new AndroidForWorkAccountSupport(context, admin);
Memastikan lingkungan kerja untuk Akun Google Play terkelola
Setelah DPC menyediakan perangkat dalam mode pemilik profil (ACTION_PROVISION_MANAGED_PROFILE
) atau perangkat
mode pemilik (ACTION_PROVISION_MANAGED_DEVICE
), pastikan perangkat dapat mendukung Akun Google Play terkelola dengan memanggil:
Kotlin
androidForWorkAccountSupport.ensureWorkingEnvironment(callback)
Java
androidForWorkAccountSupport.ensureWorkingEnvironment(callback);
Callback melaporkan keberhasilan atau kegagalan proses ini. Saat callback berhasil dikembalikan, Akun Google Play terkelola dapat ditambahkan. Jika callback melaporkan error, minta pengguna untuk memastikan perangkat memiliki koneksi jaringan (misalnya, jika download gagal). Di yang berbeda, laporkan kegagalan tersebut kepada Google.
Kotlin
object : WorkingEnvironmentCallback() { override fun onSuccess() { // Can now provision the managed Google Play Account } override fun onFailure(error: Error) { // Notify user, handle error (check network connection) } }
Java
new WorkingEnvironmentCallback() { @Override public void onSuccess() { // Can now provision the managed Google Play Account } @Override public void onFailure(Error error) { // Notify user, handle error (check network connection) } }
Menambahkan Akun Google Play terkelola
AccountManager
framework Android
dapat menambahkan Akun Google Play terkelola ke perangkat. Untuk menyederhanakan interaksi dengan
AccountManager
, menggunakan fungsi bantuan (ditampilkan dalam contoh di bawah)
dari Support Library DPC. {i>Function<i}
menangani token yang ditampilkan oleh server Google Play dan memfasilitasi penyediaan
Akun Google Play terkelola. Fungsi ini ditampilkan saat Google Play terkelola
Akun dalam status valid:
Kotlin
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback)
Java
androidForWorkAccountSupport.addAndroidForWorkAccount(token, accountAddedCallback);
token
—Token autentikasi pengguna yang dibuat oleh solusi Putar panggilanUsers.generateAuthenticationToken()
EMM API.accountAddedCallback
—Mengembalikan Akun Google Play terkelola yang berhasil ditambahkan ke perangkat. Callback ini harus menyertakan MetodeonAccountReady()
danonFailure()
.
Kotlin
val workAccountAddedCallback = object : WorkAccountAddedCallback() { override fun onAccountReady(account: Account, deviceHint: String) { // Device account was successfully added to the device // and is ready to be used. } override fun onFailure(error: Error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } }
Java
WorkAccountAddedCallback workAccountAddedCallback = new WorkAccountAddedCallback() { @Override public void onAccountReady(Account account, String deviceHint) { // Device account was successfully added to the device // and is ready to be used. } @Override public void onFailure(Error error) { // The account was not successfully added. Check that the token // provided was valid (it expires after a certain period of time). } };
Dokumentasi terkait
- Untuk mempelajari lebih lanjut Device Administration API, lihat Perangkat Administrasi.
- Untuk mempelajari metode penyediaan Android Enterprise, lihat Menyediakan perangkat di Panduan developer Android Enterprise.
- Untuk contoh GitHub yang menunjukkan cara membuat profil kerja dasar, lihat BasicManagedProfile.
- Untuk contoh GitHub yang menunjukkan cara mengatur konfigurasi di aplikasi lain sebagai pemilik profil, lihat AppRestrictionEnforcer.