Skip to content

Most visited

Recently visited

navigation

Mendukung Direct Boot

Android 7.0 berjalan dalam mode Direct Boot yang aman ketika perangkat telah dihidupkan namun pengguna tidak membuka kunci perangkat. Untuk mendukung hal ini, sistem menyediakan dua lokasi storage data:

Secara default, aplikasi tidak berjalan selama mode Direct Boot. Jika aplikasi Anda perlu melakukan tindakan selama mode Direct Boot, Anda bisa mendaftarkan komponen aplikasi yang harus dijalankan selama mode ini. Beberapa kasus penggunaan umum yang perlu dijalankan aplikasi selama mode Direct Boot antara lain:

Jika aplikasi Anda perlu mengakses data saat dijalankan dalam mode Direct Boot, gunakan storage yang dienkripsi dengan perangkat. Storage yang dienkripsi dengan perangkat berisi data terenkripsi dengan kunci yang hanya tersedia setelah perangkat melakukan booting yang berhasil diverifikasi.

Untuk data yang harus dienkripsi dengan kunci yang terkait dengan kredensial pengguna, seperti PIN atau sandi, gunakan storage yang dienkripsi dengan kredensial. Storage yang dienkripsi dengan kredensial hanya tersedia setelah pengguna berhasil membuka kunci perangkat, hingga sampai pengguna memulai ulang perangkat. Jika pengguna mengaktifkan layar kunci setelah membuka kunci perangkat, ini tidak akan mengunci storage yang dienkripsi dengan kredensial.

Meminta Akses untuk Berjalan Selama Direct Boot

Aplikasi harus mendaftarkan komponennya pada sistem agar bisa berjalan selama mode Direct Boot atau mengakses storage yang dienkripsi dengan perangkat. Aplikasi mendaftar pada sistem dengan menandai komponen sebagai peka enkripsi. Untuk menandai komponen Anda sebagai peka enkripsi, setel atribut android:directBootAware ke true dalam manifes Anda.

Komponen yang peka enkripsi bisa mendaftar untuk menerima pesan siaran ACTION_LOCKED_BOOT_COMPLETED dari sistem bila perangkat telah dimulai ulang. Pada tahap ini, storage yang dienkripsi dengan perangkat akan tersedia, dan komponen Anda bisa mengeksekusi tugas-tugas yang perlu dijalankan selama mode Direct Boot, seperti memicu alarm yang terjadwal.

Cuplikan kode berikut adalah contoh cara mendaftarkan BroadcastReceiver sebagai peka enkripsi, dan menambahkan sebuah filter maksud untuk ACTION_LOCKED_BOOT_COMPLETED, dalam manifes aplikasi:

<receiver
  android:directBootAware="true" >
  ...
  <intent-filter>
    <action android:name="android.intent.action.ACTION_LOCKED_BOOT_COMPLETED" />
  </intent-filter>
</receiver>

Setelah pengguna membuka kunci perangkat, semua komponen bisa mengakses storage yang dienkripsi dengan perangkat serta storage yang dienkripsi dengan kredensial.

Mengakses Storage yang Dienkripsi dengan Perangkat

Untuk mengakses storage yang dienkripsi dengan perangkat, buat instance Context kedua dengan memanggil Context.createDeviceProtectedStorageContext(). Semua panggilan Storage API yang dilakukan menggunakan konteks ini mengakses storage yang dienkripsi dengan perangkat. Contoh berikut mengakses storage yang dienkripsi dengan perangkat dan membuka file data aplikasi yang ada:

Context directBootContext = appContext.createDeviceProtectedStorageContext();
// Access appDataFilename that lives in device encrypted storage
FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
// Use inStream to read content...

Gunakan storage yang dienkripsi dengan perangkat hanya untuk informasi yang harus dapat diakses selama mode Direct Boot. Jangan gunakan storage yang dienkripsi dengan perangkat sebagai storage terenkripsi untuk semuanya. Untuk informasi pribadi pengguna, atau data terenkripsi yang tidak diperlukan selama mode Direct Boot, gunakan storage yang dienkripsi dengan kredensial.

Mendapatkan Notifikasi saat Pengguna Membuka Kunci

Bila pengguna membuka kunci perangkat setelah mulai ulang, aplikasi Anda bisa beralih mengakses storage yang dienkripsi dengan kredensial dan menggunakan layanan sistem biasa yang bergantung pada kredensial pengguna.

Agar diberi tahu bila pengguna membuka kunci perangkat setelah boot ulang, daftarkan BroadcastReceiver dari komponen yang berjalan untuk mendengarkan pesan notifikasi buka kunci. Bila pengguna membuka kunci perangkat setelah booting:

Jika pengguna telah membuka kunci perangkat, Anda bisa mengetahuinya dengan memanggil UserManager.isUserUnlocked().

Migrasi Data yang Ada

Jika pengguna memperbarui perangkat mereka untuk menggunakan mode Direct Boot, data Anda yang ada mungkin perlu dipindahkan ke storage yang dienkripsi dengan perangkat. Gunakan Context.moveSharedPreferencesFrom() dan Context.moveDatabaseFrom() untuk memindahkan data preferensi dan basis data antara storage yang dienkripsi dengan kredensial dan storage yang dienkripsi dengan perangkat.

Pertimbangkan dengan baik saat memutuskan data apa yang akan dipindahkan dari storage yang dienkripsi dengan kredensial ke storage yang dienkripsi dengan perangkat. Anda sebaiknya tidak memindahkan informasi pengguna yang bersifat rahasia, seperti kata sandi atau token otorisasi, ke storage yang dienkripsi dengan perangkat. Dalam beberapa kejadian, Anda mungkin perlu mengelola set data terpisah pada dua tempat storage yang dienkripsi.

Menguji Aplikasi Peka Enkripsi

Ujilah aplikasi peka enkripsi Anda dengan mode Direct Boot diaktifkan. Ada dua cara untuk mengaktifkan Direct Boot.

Perhatian: Mengaktifkan Direct Boot akan menghapus semua data pengguna pada perangkat.

Pada perangkat yang didukung dengan Android 7.0 terpasang, aktifkan Direct Boot dengan melakukan salah satu hal berikut:

Mode emulasi Direct Boot juga tersedia, jika Anda perlu mengganti mode pada perangkat pengujian. Mode emulasi sebaiknya hanya digunakan selama development dan bisa menyebabkan kehilangan data. Untuk mengaktifkan mode emulasi Direct Boot, setel pola kunci pada perangkat, pilih "No thanks" jika ditanya mengenai layar start-up aman saat menetapkan pola kunci, kemudian gunakan perintah shell adb berikut:

$ adb shell sm set-emulate-fbe true

Untuk menonaktifkan mode emulasi Direct Boot, gunakan perintah berikut:

$ adb shell sm set-emulate-fbe false

Menggunakan perintah ini akan menyebabkan perangkat melakukan boot ulang.

Memeriksa Status Enkripsi Kebijakan Perangkat

Aplikasi administrasi perangkat bisa menggunakan DevicePolicyManager.getStorageEncryptionStatus() untuk memeriksa status enkripsi perangkat saat ini. Jika aplikasi Anda menargetkan API level lebih rendah dari 24.0 (Android 7.0), getStorageEncryptionStatus() akan mengembalikan ENCRYPTION_STATUS_ACTIVE jika perangkat menggunakan enkripsi full-disk, atau enkripsi berbasis file dengan Direct Boot. Pada kedua kasus ini, data selalu tersimpan dienkripsi pada saat tidak dipakai. Jika aplikasi Anda menargetkan API level 24.0 atau yang lebih tinggi, getStorageEncryptionStatus() akan mengembalikan ENCRYPTION_STATUS_ACTIVE jika perangkat menggunakan enkripsi full-disk. Itu akan mengembalikan ENCRYPTION_STATUS_ACTIVE_PER_USER jika perangkat menggunakan enkripsi berbasis file dengan Direct Boot.

Jika Anda membangun sebuah aplikasi administrasi perangkat yang menargetkan Android 7.0, pastikan untuk memeriksa ENCRYPTION_STATUS_ACTIVE dan ENCRYPTION_STATUS_ACTIVE_PER_USER untuk menentukan apakah perangkat telah dienkripsi.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Ikuti Google Developers di WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)