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