1page.title=Direct Boot 2page.keywords=pratinjau,sdk,direct boot 3page.tags=androidn 4page.image=images/cards/card-nyc_2x.jpg 5 6@jd:body 7 8<div id="tb-wrapper"> 9<div id="tb"> 10 <h2>Dalam dokumen ini</h2> 11 <ol> 12 <li><a href="#run">Meminta Akses untuk Berjalan Selama Direct Boot</a></li> 13 <li><a href="#access">Mengakses Penyimpanan yang Dienkripsi dengan Perangkat</a></li> 14 <li><a href="#notification">Mendapatkan Pemberitahuan saat Pengguna Membuka Kunci</a></li> 15 <li><a href="#migrating">Migrasi Data yang Ada</a></li> 16 <li><a href="#testing">Menguji Aplikasi Peka Enkripsi Anda</a></li> 17 </ol> 18</div> 19</div> 20 21<p>Android N berjalan dalam mode <i>Direct Boot</i> yang aman 22bila perangkat telah dihidupkan namun pengguna tidak membuka 23kunci perangkat. Untuk mendukung hal ini, sistem menyediakan dua lokasi penyimpanan untuk data:</p> 24 25<ul> 26<li><i>Penyimpanan yang dienkripsi dengan kredensial</i>, yang merupakan lokasi penyimpanan default 27dan hanya tersedia setelah pengguna membuka kunci perangkat.</li> 28<li><i>Penyimpanan yang dienkripsi dengan perangkat</i>, yang merupakan lokasi penyimpanan yang tersedia 29selama mode Direct Boot dan setelah pengguna membuka kunci perangkat.</li> 30</ul> 31 32<p>Secara default, aplikasi tidak berjalan selama mode Direct Boot. 33Jika aplikasi Anda perlu melakukan tindakan selama mode Direct Boot, Anda bisa mendaftarkan 34komponen aplikasi yang harus dijalankan selama mode ini. Beberapa kasus penggunaan umum 35untuk aplikasi yang perlu dijalankan selama mode Direct Boot antara lain:</p> 36 37<ul> 38<li>Aplikasi yang telah menjadwalkan pemberitahuan, seperti aplikasi 39beker.</li> 40<li>Aplikasi yang menyediakan pemberitahuan pengguna yang penting, seperti aplikasi SMS.</li> 41<li>Aplikasi yang menyediakan layanan aksesibilitas, seperti TalkBack.</li> 42</ul> 43 44<p>Jika aplikasi Anda perlu mengakses data saat dijalankan dalam mode Direct Boot, gunakan 45penyimpanan yang dienkripsi dengan perangkat. Penyimpanan yang dienkripsi dengan perangkat berisi data 46yang dienkripsi dengan kunci yang hanya tersedia setelah perangkat melakukan 47booting yang berhasil diverifikasi.</p> 48 49<p>Untuk data yang harus dienkripsi dengan kunci yang dikaitkan dengan kredensial 50pengguna, seperti PIN atau kata sandi, gunakan penyimpanan yang dienkripsi dengan kredensial. 51Penyimpanan yang dienkripsi dengan kredensial hanya tersedia setelah pengguna berhasil 52membuka kunci perangkat, hingga saat pengguna menghidupkan ulang perangkat lagi. Jika 53pengguna mengaktifkan layar kunci setelah membuka kunci perangkat, hal ini tidak akan mengunci 54penyimpanan yang dienkripsi dengan kredensial.</p> 55 56<h2 id="run">Meminta Akses untuk Berjalan Selama Direct Boot</h2> 57 58<p>Aplikasi harus mendaftarkan komponennya pada sistem agar 59bisa berjalan selama mode Direct Boot atau mengakses 60penyimpanan yang dienkripsi dengan perangkat. Aplikasi mendaftar pada sistem dengan menandai komponen sebagai 61<i>peka enkripsi</i>. Untuk menandai komponen Anda sebagai peka enkripsi, setel atribut 62<code>android:directBootAware</code> ke true dalam manifes Anda.<p> 63 64<p>Komponen yang peka enkripsi bisa mendaftar untuk menerima pesan siaran 65<code>LOCKED_BOOT_COMPLETED</code> dari 66sistem bila perangkat telah dihidupkan ulang. Pada tahap ini 67penyimpanan yang dienkripsi dengan perangkat akan tersedia, dan komponen Anda bisa mengeksekusi tugas-tugas yang perlu 68dijalankan selama mode Direct Boot, seperti memicu alarm yang terjadwal.</p> 69 70<p>Cuplikan kode berikut adalah contoh cara mendaftarkan 71{@link android.content.BroadcastReceiver} sebagai peka enkripsi, dan menambahkan sebuah 72filter intent untuk <code>LOCKED_BOOT_COMPLETED</code>, dalam manifes aplikasi:</p> 73 74<pre> 75<receiver 76 android:directBootAware="true" > 77 ... 78 <intent-filter> 79 <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /> 80 </intent-filter> 81</receiver> 82</pre> 83 84<p>Setelah pengguna membuka kunci perangkat, semua komponen bisa mengakses 85penyimpanan yang dienkripsi dengan perangkat serta penyimpanan yang dienkripsi dengan kredensial.</p> 86 87<h2 id="access">Mengakses Penyimpanan yang Dienkripsi dengan Perangkat</h2> 88 89<p>Untuk mengakses penyimpanan yang dienkripsi dengan perangkat, buat instance 90{@link android.content.Context} kedua dengan memanggil 91<code>Context.createDeviceProtectedStorageContext()</code>. Semua panggilan 92API penyimpanan yang dibuat menggunakan konteks ini mengakses penyimpanan yang dienkripsi dengan perangkat. Contoh 93berikut mengakses penyimpanan yang dienkripsi dengan perangkat dan membuka file data aplikasi 94yang ada:</p> 95 96<pre> 97Context directBootContext = appContext.createDeviceProtectedStorageContext(); 98// Access appDataFilename that lives in device encrypted storage 99FileInputStream inStream = directBootContext.openFileInput(appDataFilename); 100// Use inStream to read content... 101</pre> 102 103<p>Gunakan penyimpanan yang dienkripsi dengan perangkat hanya untuk 104informasi yang harus bisa diakses selama mode Direct Boot. 105Jangan gunakan penyimpanan yang dienkripsi dengan perangkat sebagai penyimpanan terenkripsi serba guna. 106Untuk informasi pengguna yang bersifat pribadi, atau data terenkripsi yang tidak diperlukan selama 107mode Direct Boot, gunakan penyimpanan yang dienkripsi dengan kredensial.</p> 108 109<h2 id="notification">Mendapatkan Pemberitahuan saat Pengguna Membuka Kunci</h2> 110 111<p>Setelah pengguna membuka kunci perangkat setelah restart, aplikasi Anda bisa beralih untuk 112mengakses penyimpanan yang dienkripsi dengan kredensial dan menggunakan layanan sistem biasa yang 113bergantung pada kredensial pengguna.</p> 114 115<p>Agar diberi tahu bila pengguna membuka kunci perangkat setelah boot ulang, 116daftarkan {@link android.content.BroadcastReceiver} dari komponen yang berjalan 117untuk mendengarkan pesan <code>ACTION_USER_UNLOCKED</code>. Atau, Anda bisa 118menerima pesan {@link android.content.Intent#ACTION_BOOT_COMPLETED 119ACTION_BOOT_COMPLETED} yang ada, yang sekarang menunjukkan bahwa perangkat telah dihidupkan dan 120pengguna telah membuka kunci perangkat.</p> 121 122<p>Anda bisa langsung kueri apakah pengguna telah membuka kunci perangkat dengan memanggil 123<code>UserManager.isUserUnlocked()</code>.</p> 124 125<h2 id="migrating">Migrasi Data yang Ada</h2> 126 127<p>Jika pengguna memperbarui perangkat mereka untuk menggunakan mode Direct Boot, 128data Anda yang ada mungkin perlu dipindahkan ke penyimpanan yang dienkripsi dengan perangkat. Gunakan 129<code>Context.moveSharedPreferencesFrom()</code> dan 130<code>Context.moveDatabaseFrom()</code> untuk memindahkan data preferensi dan 131basis data antara penyimpanan yang dienkripsi dengan kredensial dan penyimpanan yang dienkripsi dengan perangkat.</p> 132 133<p>Pertimbangkan dengan baik saat memutuskan data apa yang akan dipindahkan dari 134penyimpanan yang dienkripsi dengan kredensial ke penyimpanan yang dienkripsi dengan perangkat. Anda sebaiknya tidak memindahkan 135informasi pengguna yang bersifat rahasia, seperti kata sandi atau token otorisasi, ke 136penyimpanan yang dienkripsi dengan perangkat. Dalam beberapa skenario, Anda mungkin perlu mengelola 137set data terpisah pada dua tempat penyimpanan yang dienkripsi.</p> 138 139<h2 id="testing">Menguji Aplikasi Peka Enkripsi Anda</h2> 140 141<p>Uji aplikasi peka enkripsi Anda menggunakan mode Direct Boot baru. Ada 142dua cara untuk mengaktifkan Direct Boot.</p> 143 144<p class="caution"><strong>Perhatian:</strong> Mengaktifkan Direct Boot 145akan menghapus semua data pengguna pada perangkat.</p> 146 147<p>Pada perangkat yang didukung dengan Android N terpasang, aktifkan 148Direct Boot dengan melakukan salah satu hal berikut:</p> 149 150<ul> 151<li>Pada perangkat, aktifkan <b>Developer options</b> jika Anda belum melakukannya dengan 152masuk ke <b>Settings > About phone</b>, dan menyentuh <b>Build number</b> 153tujuh kali. Setelah layar Developer options terbuka, masuk ke 154<b>Settings > Developer options</b> dan pilih 155<b>Convert to file encryption</b>.</li> 156<li>Gunakan perintah shell adb berikut untuk mengaktifkan mode Direct Boot: 157<pre class="no-pretty-print"> 158$ adb reboot-bootloader 159$ fastboot --wipe-and-use-fbe 160</pre> 161</li> 162</ul> 163 164<p>Mode emulasi Direct Boot juga tersedia, jika Anda perlu mengganti 165mode pada perangkat pengujian. Mode emulasi sebaiknya hanya digunakan selama 166pengembangan dan bisa menyebabkan kehilangan data. Untuk mengaktifkan mode emulasi Direct Boot, 167setel pola kunci pada perangkat, pilih "No thanks" jika ditanya mengenai 168layar start-up aman saat menetapkan pola kunci, kemudian gunakan 169perintah shell adb berikut:</p> 170 171<pre class="no-pretty-print"> 172$ adb shell sm set-emulate-fbe true 173</pre> 174 175<p>Untuk menonaktifkan mode emulasi Direct Boot, gunakan perintah berikut:</p> 176 177<pre class="no-pretty-print"> 178$ adb shell sm set-emulate-fbe false 179</pre> 180 181<p>Menggunakan perintah ini akan menyebabkan perangkat melakukan boot ulang.</p> 182