1 page.title=Manifes Aplikasi 2 @jd:body 3 4 <div id="qv-wrapper"> 5 <div id="qv"> 6 7 <h2>Dalam dokumen ini</h2> 8 <ol> 9 <li><a href="#filestruct">Struktur File Manifes</a></li> 10 <li><a href="#filec">Konvensi File</a> 11 <li><a href="#filef">Fitur File</a> 12 <ol> 13 <li><a href="#ifs">Filter Intent</a></li> 14 <li><a href="#iconlabel">Ikon dan Label</a></li> 15 <li><a href="#perms">Izin</a></li> 16 <li><a href="#libs">Pustaka</a></li> 17 </ol></li> 18 </ol> 19 </div> 20 </div> 21 22 <p> 23 Setiap aplikasi harus memiliki file AndroidManifest.xml (bernama persis seperti ini) di direktori akar. 24 <span itemprop="description">File manifes 25 menyediakan informasi penting tentang aplikasi ke sistem Android, 26 informasi yang harus dimiliki sistem agar bisa menjalankan setiap kode 27 aplikasi.</span> Di antaranya, manifes melakukan hal berikut ini: 28 </p> 29 30 <ul> 31 <li>Menamai paket Java untuk aplikasi. 32 Nama paket berfungsi sebagai identifier unik untuk aplikasi.</li> 33 34 <li>Menjelaskan berbagai komponen aplikasi—aktivitas, 35 layanan, penerima siaran, dan penyedia konten 36 yang membentuk aplikasi. Menamai kelas yang mengimplementasikan setiap komponen dan 37 mempublikasikan kemampuannya (misalnya, pesan {@link android.content.Intent 38 Intent} mana yang bisa ditanganinya). Deklarasi ini memberi tahu sistem Android mengenai 39 komponennya dan dalam kondisi apa bisa diluncurkan.</li> 40 41 <li>Menentukan proses yang akan menjadi host komponen aplikasi.</li> 42 43 <li>Mendeklarasikan izin aplikasi mana yang harus dimiliki untuk 44 mengakses bagian yang dilindungi pada API dan berinteraksi dengan aplikasi lain.</li> 45 46 <li>Juga mendeklarasikan izin lain yang harus dimiliki untuk 47 untuk berinteraksi dengan komponen aplikasi.</li> 48 49 <li>Mencantumkan daftar kelas {@link android.app.Instrumentation} yang memberikan 50 profil dan informasi lain saat aplikasi berjalan. Deklarasi ini 51 hanya ada di manifes saat aplikasi dibuat dan diuji; 52 deklarasi dihapus sebelum aplikasi dipublikasikan.</li> 53 54 <li>Mendeklarasikan tingkat minimum API Android yang diperlukan 55 aplikasi.</li> 56 57 <li>Mencantumkan daftar pustaka yang harus ditautkan aplikasi.</li> 58 </ul> 59 60 61 <h2 id="filestruct">Struktur File Manifes</h2> 62 63 <p> 64 Diagram di bawah ini menampilkan struktur umum file manifes dan setiap 65 elemen yang bisa ditampungnya. Setiap elemen, bersama 66 atributnya, didokumentasikan secara lengkap dalam file terpisah. Untuk melihat 67 informasi terperinci tentang setiap elemen, klik nama elemen dalam diagram, 68 dalam daftar abjad elemen yang mengikuti diagram, atau penyebutan nama 69 elemen lainnya. 70 </p> 71 72 <pre> 73 <?xml version="1.0" encoding="utf-8"?> 74 75 <a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a> 76 77 <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission /></a> 78 <a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission /></a> 79 <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree /></a> 80 <a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group /></a> 81 <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html"><instrumentation /></a> 82 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk /></a> 83 <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><uses-configuration /></a> <!-- ##api level 3## --> 84 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><uses-feature /></a> <!-- ##api level 4## --> 85 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><supports-screens /></a> <!-- ##api level 4## --> 86 <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><compatible-screens /></a> <!-- ##api level 9## --> 87 <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html"><supports-gl-texture /></a> <!-- ##api level 11## --> 88 89 <a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a> 90 91 <a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a> 92 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a> 93 <a href="{@docRoot}guide/topics/manifest/action-element.html"><action /></a> 94 <a href="{@docRoot}guide/topics/manifest/category-element.html"><category /></a> 95 <a href="{@docRoot}guide/topics/manifest/data-element.html"><data /></a> 96 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"></intent-filter></a> 97 <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data /></a> 98 <a href="{@docRoot}guide/topics/manifest/activity-element.html"></activity></a> 99 100 <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"><activity-alias></a> 101 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"></intent-filter></a> 102 <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data /></a> 103 <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"></activity-alias></a> 104 105 <a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a> 106 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"></intent-filter></a> 107 <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data/></a> 108 <a href="{@docRoot}guide/topics/manifest/service-element.html"></service></a> 109 110 <a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a> 111 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"></intent-filter></a> 112 <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data /></a> 113 <a href="{@docRoot}guide/topics/manifest/receiver-element.html"></receiver></a> 114 115 <a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a> 116 <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html"><grant-uri-permission /></a> 117 <a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data /></a> 118 <a href="{@docRoot}guide/topics/manifest/path-permission-element.html"><path-permission /></a> 119 <a href="{@docRoot}guide/topics/manifest/provider-element.html"></provider></a> 120 121 <a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><uses-library /></a> 122 123 <a href="{@docRoot}guide/topics/manifest/application-element.html"></application></a> 124 125 <a href="{@docRoot}guide/topics/manifest/manifest-element.html"></manifest></a> 126 </pre> 127 128 <p> 129 Semua elemen yang bisa muncul dalam file manifes tercantum di bawah ini 130 dalam urutan abjad. Ini adalah satu-satunya elemen legal; Anda tidak bisa 131 menambahkan elemen atau atribut sendiri. 132 </p> 133 134 <p style="margin-left: 2em"> 135 <code><a href="{@docRoot}guide/topics/manifest/action-element.html"><action></a></code> 136 <br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 137 <br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"><activity-alias></a></code> 138 <br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> 139 <br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html"><category></a></code> 140 <br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html"><data></a></code> 141 <br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html"><grant-uri-permission></a></code> 142 <br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html"><instrumentation></a></code> 143 <br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a></code> 144 <br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> 145 <br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html"><meta-data></a></code> 146 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 147 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group></a></code> 148 <br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree></a></code> 149 <br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code> 150 <br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code> 151 <br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code> 152 <br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><supports-screens></a></code> <!-- ##api level 4## --> 153 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html"><uses-configuration></a></code> <!-- ##api level 3## --> 154 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><uses-feature></a></code> <!-- ##api level 4## --> 155 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><uses-library></a></code> 156 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> 157 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><uses-sdk></a></code> 158 </p> 159 160 161 162 163 <h2 id="filec">Konvensi File</h2> 164 165 <p> 166 Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen 167 dan atribut di manifes: 168 </p> 169 170 <dl> 171 <dt><b>Elemen</b></dt> 172 <dd>Hanya elemen 173 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> dan 174 <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> 175 yang diwajibkan, masing-masing harus ada dan hanya boleh terjadi sekali. 176 Umumnya elemen lain bisa terjadi berkali-kali atau sama sekali tidak terjadi — meskipun 177 setidaknya sebagian dari elemen itu harus ada untuk agar manifes mencapai sesuatu yang 178 berarti. 179 180 <p> 181 Jika elemen tidak berisi apa pun, berarti elemen itu berisi elemen lain. 182 Semua nilai diatur melalui atribut, bukan sebagai data karakter dalam elemen. 183 </p> 184 185 <p> 186 Elemen yang sama tingkatan umumnya tidak diurutkan. Misalnya, elemen 187 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>, 188 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code>, dan 189 <code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code> 190 bisa dicampur dalam urutan apa pun. (Elemen 191 <code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html"><activity-alias></a></code> 192 merupakan eksepsi untuk aturan ini: Elemen ini harus mengikuti 193 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 194 ini aliasnya.) 195 </p></dd> 196 197 <dt><b>Atribut</b></dt> 198 <dd>Secara formal, semua atribut opsional. Akan tetapi, ada sebagian 199 yang harus ditetapkan agar elemen bisa mencapai tujuannya. Gunakan 200 dokumentasi sebagai panduan. Bagi atribut yang benar-benar opsional, ini menyebutkan 201 nilai default atau menyatakan apa yang terjadi jika tidak ada spesifikasi. 202 203 <p>Selain untuk beberapa atribut elemen akar 204 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code>, 205 semua nama atribut dimulai dengan awalan {@code android:} — 206 misalnya, {@code android:alwaysRetainTaskState}. Karena awalan ini universal, dokumentasi umumnya meniadakannya saat mengacu atribut 207 dengan nama. 208 </p></dd> 209 210 <dt><b>Mendeklarasikan nama kelas</b></dt> 211 <dd>Banyak elemen berhubungan dengan objek Java, termasuk elemen 212 aplikasi itu sendiri (elemen 213 <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> 214 ) dan aktivitas komponen — utamanya 215 (<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>), 216 layanan 217 (<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>), 218 penerima siaran 219 (<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code>), 220 dan penyedia konten 221 (<code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code>). 222 223 <p> 224 Jika mendefinisikan subkelas, seperti yang selalu Anda definisikan untuk kelas komponen 225 ({@link android.app.Activity}, {@link android.app.Service}, 226 {@link android.content.BroadcastReceiver}, dan {@link android.content.ContentProvider}), 227 subkelas dideklarasikan melalui atribut {@code name}. Nama harus menyertakan tujuan 228 paket lengkap. 229 Misalnya, subkelas {@link android.app.Service} mungkin dideklarasikan sebagai berikut: 230 </p> 231 232 <pre><manifest . . . > 233 <application . . . > 234 <service android:name="com.example.project.SecretService" . . . > 235 . . . 236 </service> 237 . . . 238 </application> 239 </manifest></pre> 240 241 <p> 242 Akan tetapi, sebagai shorthand, jika karakter pertama string adalah titik, 243 string akan ditambahkan ke nama paket aplikasi (seperti yang ditetapkan dalam elemen 244 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html"><manifest></a></code> 245 melalui atribut 246 <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 247 ). Penetapan berikut sama dengan di atas: 248 </p> 249 250 <pre><manifest package="com.example.project" . . . > 251 <application . . . > 252 <service android:name=".SecretService" . . . > 253 . . . 254 </service> 255 . . . 256 </application> 257 </manifest></pre> 258 259 <p> 260 Saat memulai komponen, Android akan membuat instance subkelas yang diberi nama. 261 Jika subkelas tidak ditetapkan, maka akak dibuat instance kelas dasar. 262 </p></dd> 263 264 <dt><b>Banyak nilai</b></dt> 265 <dd>Jika lebih dari satu nilai yang dapat ditetapkan, elemen ini hampir selalu 266 diulangi, bukan menampilkan daftar banyak nilai dalam satu elemen. 267 Misalnya, filter intent dapat mencantumkan beberapa tindakan: 268 269 <pre><intent-filter . . . > 270 <action android:name="android.intent.action.EDIT" /> 271 <action android:name="android.intent.action.INSERT" /> 272 <action android:name="android.intent.action.DELETE" /> 273 . . . 274 </intent-filter></pre></dd> 275 276 <dt><b>Nilai sumber daya</b></dt> 277 <dd>Beberapa atribut memiliki nilai yang bisa ditampilkan kepada pengguna — misalnya 278 , label dan ikon aktivitas. Nilai atribut ini 279 harus dilokalkan dan karenanya ditetapkan dari sumber daya atau tema. Nilai sumber 280 daya dinyatakan dalam format berikut,</p> 281 282 <p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p> 283 284 <p> 285 dalam hal ini nama <i>package</i> boleh dihilangkan jika sumber daya ada dalam paket yang sama dengan 286 dengan aplikasi, <i>type</i> adalah tipe sumber daya — seperti "string" atau 287 "drawable" — dan <i>name</i> adalah nama yang mengidentifikasi sumber daya tertentu. 288 Misalnya: 289 </p> 290 291 <pre><activity android:icon="@drawable/smallPic" . . . ></pre> 292 293 <p> 294 Nilai tema diekspresikan dengan cara yang sama, namun dengan awal '{@code ?}' 295 dan bukan '{@code @}': 296 </p> 297 298 <p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>:<i>name</i>} 299 </p></dd> 300 301 <dt><b>Nilai-nilai string</b></dt> 302 <dd>Bila nilai atribut adalah string, dua garis miring kiri ('{@code \\}') 303 harus digunakan untuk meninggalkan karakter — misalnya, '{@code \\n}' untuk 304 baris baru atau '{@code \\uxxxx}' untuk karakter Unicode.</dd> 305 </dl> 306 307 308 <h2 id="filef">Fitur File</h2> 309 310 <p> 311 Bagian berikut menjelaskan cara menerapkan sebagian fitur Android 312 dalam file manifest. 313 </p> 314 315 316 <h3 id="ifs">Filter Intent</h3> 317 318 <p> 319 Komponen inti dari aplikasi (aktivitasnya, layanannya, dan penerima 320 siaran) diaktifkan oleh <i>intent</i>. Intent adalah 321 sekumpulan informasi (objek {@link android.content.Intent}) yang menjelaskan 322 tindakan yang diinginkan — termasuk data yang akan ditindaklanjuti, kategori 323 komponen yang harus melakukan tindakan, dan petunjuk terkait lainnya. 324 Android mencari komponen yang sesuai untuk merespons intent, meluncurkan 325 instance komponen baru jika diperlukan, dan meneruskannya ke 326 objek Intent. 327 </p> 328 329 <p> 330 Komponen mengiklankan kemampuannya — jenis intent yang bisa diresponsnya 331 — melalui <i>filter intent</i>. Karena sistem Android 332 harus mempelajari intent yang dapat ditangani komponen sebelum meluncurkan komponen, 333 filter intent ditetapkan dalam manifes sebagai elemen 334 <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a></code> 335 . Sebuah komponen dapat memiliki filter dalam jumlah berapa saja, masing-masing menjelaskan 336 kemampuan yang berbeda. 337 </p> 338 339 <p> 340 Intent yang secara eksplisit menamai komponen target akan mengaktifkan komponen itu; 341 filter tidak berperan. Namun intent yang tidak menetapkan target 342 dengan nama dapat mengaktifkan komponen hanya jika dapat melewati salah satu filter 343 komponen. 344 </p> 345 346 <p> 347 Untuk informasi tentang cara objek Intent diuji terhadap filter intent, 348 lihat dokumen terpisah, 349 <a href="{@docRoot}guide/components/intents-filters.html">Intent 350 dan Filter Intent</a>. 351 </p> 352 353 354 <h3 id="iconlabel">Ikon dan Label</h3> 355 356 <p> 357 Sejumlah elemen memiliki atribut {@code icon} dan {@code label} untuk 358 ikon kecil dan label teks yang bisa ditampilkan kepada pengguna. Sebagian ada juga yang memiliki atribut 359 {@code description}untuk teks penjelasan yang lebih panjang yang juga bisa 360 ditampilkan pada layar. Misalnya, elemen 361 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 362 memiliki ketiga atribut ini, jadi saat pengguna ditanya apakah akan 363 memberi izin bagi aplikasi yang memintanya, ikon yang mewakili 364 izin, nama izin, dan keterangan yang 365 mengikutinya bisa ditampilkan kepada pengguna. 366 </p> 367 368 <p> 369 Dalam setiap kasus, ikon dan label yang ditetapkan dalam elemen yang memuatnya menjadi 370 {@code icon} default dan pengaturan {@code label} untuk semua subelemen kontainer ini. 371 Karena itu, ikon dan label yang ditetapkan dalam elemen 372 <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> 373 adalah ikon dan label default untuk setiap komponen aplikasi. 374 Demikian pula, ikon dan label yang ditetapkan untuk komponen — misalnya, elemen 375 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 376 — adalah pengaturan default untuk setiap elemen komponen 377 <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html"><intent-filter></a></code> 378 . Jika elemen 379 <code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></a></code> 380 menetapkan label, namun suatu aktivitas dan filter intent-nya tidak menetapkan label, 381 maka label aplikasi akan dianggap sama-sama sebagai label aktvitas dan 382 filter intent. 383 </p> 384 385 <p> 386 Ikon dan label yang ditetapkan untuk filter intent digunakan untuk mewakili komponen 387 kapan saja komponen ditampilkan kepada pengguna saat memenuhi fungsi yang 388 diiklankan oleh filter. Misalnya, filter dengan pengaturan 389 "{@code android.intent.action.MAIN}" dan 390 "{@code android.intent.category.LAUNCHER}" mengiklankan aktivitas 391 sebagai aktivitas yang memulai aplikasi—, yaitu 392 sebagai salah satu aktivitas yang harus ditampilkan dalam launcher aplikasi. Ikon dan label yang 393 diatur dalam filter karenanya adalah ikon dan label yang ditampilkan dalam launcher. 394 </p> 395 396 397 <h3 id="perms">Izin</h3> 398 399 <p> 400 Sebuah <i>izin</i> adalah pembatasan yang membatasi akses ke bagian 401 kode atau ke data pada perangkat. Pembatasan diberlakukan untuk melindungi data dan kode 402 penting yang bisa disalahgunakan untuk mengganggu atau merusak pengalaman pengguna. 403 </p> 404 405 <p> 406 Setiap izin diidentifikasi melalui label yang unik. Sering kali, label menunjukkan 407 tindakan yang dibatasi. Misalnya, berikut ini adalah beberapa izin yang didefinisikan 408 oleh Android: 409 </p> 410 411 <p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS} 412 <br/>{@code android.permission.READ_OWNER_DATA} 413 <br/>{@code android.permission.SET_WALLPAPER} 414 <br/>{@code android.permission.DEVICE_POWER}</p> 415 416 <p> 417 Sebuah fitur bisa dilindungi paling banyak oleh satu izin. 418 </p> 419 420 <p> 421 Jika aplikasi memerlukan akses ke fitur yang dilindungi oleh izin, 422 aplikasi harus mendeklarasikan bahwa aplikasi memerlukan izin itu dengan elemen 423 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> 424 dalam manifes. Kemudian, bila aplikasi telah diinstal pada 425 perangkat, installer akan menentukan apakah izin yang diminta akan diberikan atau tidak 426 dengan memeriksa otoritas yang menandatangani 427 sertifikat aplikasi dan, dalam beberapa kasus, bertanya pada pengguna. 428 Jika izin diberikan, aplikasi tersebut bisa menggunakan 429 fitur yang dilindungi. Jika tidak, upaya aplikasi untuk mengakses fitur tersebut akan gagal 430 tanpa ada pemberitahuan apa pun kepada pengguna. 431 </p> 432 433 <p> 434 Aplikasi juga bisa melindungi komponennya sendiri (aktivitas, layanan, 435 penerima siaran, dan penyedia konten) dengan izin. Aplikasi bisa menerapkan 436 izin mana pun yang didefinisikan oleh Android (tercantum dalam 437 {@link android.Manifest.permission android.Manifest.permission}) atau dideklarasikan 438 oleh aplikasi lain. Atau aplikasi bisa mendefinisikannya sendiri. Izin baru dideklarasikan 439 dengan elemen 440 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 441 . Misalnya, aktivitas dapat dilindungi sebagai berikut: 442 </p> 443 444 <pre> 445 <manifest . . . > 446 <permission android:name="com.example.project.DEBIT_ACCT" . . . /> 447 <uses-permission android:name="com.example.project.DEBIT_ACCT" /> 448 . . . 449 <application . . .> 450 <activity android:name="com.example.project.FreneticActivity" 451 android:permission="com.example.project.DEBIT_ACCT" 452 . . . > 453 . . . 454 </activity> 455 </application> 456 </manifest> 457 </pre> 458 459 <p> 460 Perhatikan, dalam contoh ini izin {@code DEBIT_ACCT} tidak hanya 461 dideklarasikan dengan elemen 462 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 463 , penggunaannya juga diminta dengan elemen 464 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> 465 . Penggunaannya harus diminta agar komponen 466 aplikasi lainnya bisa menjalankan aktivitas yang dilindungi, meskipun perlindungan itu 467 diberlakukan oleh aplikasi itu sendiri. 468 </p> 469 470 <p> 471 Dalam contoh yang sama, jika atribut {@code permission} ditetapkan 472 untuk izin yang dideklarasikan di tempat lain 473 lain (seperti {@code android.permission.CALL_EMERGENCY_NUMBERS}, maka atribut 474 tidak perlu mendeklarasikannya lagi dengan elemen 475 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 476 . Akan tetapi, penggunaannya masih perlu dengan 477 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code>. 478 </p> 479 480 <p> 481 Elemen 482 <code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree></a></code> 483 mendeklarasikan namespace untuk grup izin yang akan didefinisikan dalam 484 kode. Dan 485 <code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group></a></code> 486 mendefinisikan label untuk seperangkat izin (yang sama-sama dideklarasikan dalam manifes dengan elemen 487 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 488 dan yang dideklarasikan di tempat lain). Ini hanya memengaruhi cara izin 489 dikelompokkan saat ditampilkan kepada pengguna. Elemen 490 <code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html"><permission-group></a></code> 491 tidak menetapkan izin mana dimiliki grup; 492 elemen hanya memberi nama grup. Izin ditempatkan dalam grup 493 dengan memberikan nama grup ke elemen 494 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html"><permission></a></code> 495 melalui atribut 496 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 497 . 498 </p> 499 500 501 <h3 id="libs">Pustaka</h3> 502 503 <p> 504 Setiap aplikasi ditautkan dengan pustaka default Android, yang 505 menyertakan paket dasar untuk membangun aplikasi (dengan kelas umum 506 seperti Activity, Service, Intent, View, Button, Application, ContentProvider, 507 dan sebagainya). 508 </p> 509 510 <p> 511 Akan tetapi, sebagian paket berada dalam pustakanya sendiri. Jika aplikasi Anda 512 menggunakan kode salah satu paket ini, aplikasi secara eksplisit meminta untuk ditautkan dengan 513 paket tersebut. Manifes harus berisi elemen 514 <code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html"><uses-library></a></code> yang 515 terpisah untuk menamai setiap pustaka. (Nama pustaka bisa ditemukan 516 dalam dokumentasi paket.) 517 </p> 518