• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Bản kê khai Ứng dụng
2@jd:body
3
4<div id="qv-wrapper">
5<div id="qv">
6
7<h2>Trong tài liệu này</h2>
8<ol>
9<li><a href="#filestruct">Cấu trúc của Tệp Bản kê khai</a></li>
10<li><a href="#filec">Các Quy ước Tệp</a>
11<li><a href="#filef">Các Tính năng Tệp</a>
12	<ol>
13	<li><a href="#ifs">Bộ lọc Ý định</a></li>
14	<li><a href="#iconlabel">Biểu tượng và Nhãn</a></li>
15	<li><a href="#perms">Quyền</a></li>
16	<li><a href="#libs">Thư viện</a></li>
17	</ol></li>
18</ol>
19</div>
20</div>
21
22<p>
23  Mọi ứng dụng đều phải có một tệp AndroidManifest.xml (chính xác là
24  tên gọi này) trong thư mục gốc của mình. <span itemprop="description">Tệp bản kê khai
25  trình bày những thông tin thiết yếu về ứng dụng của bạn với hệ thống Android,
26  thông tin mà hệ thống phải có trước khi có thể chạy bất kỳ mã nào
27  của ứng dụng.</span> Ngoài một số mục đích khác, bản kê khai thực hiện những điều sau:
28</p>
29
30<ul>
31<li>Nó đặt tên gói Java cho ứng dụng.
32Tên gói đóng vai trò như một mã nhận diện duy nhất cho ứng dụng.</li>
33
34<li>Nó mô tả các thành phần của ứng dụng &mdash; hoạt động,
35dịch vụ, hàm nhận quảng bá, và trình cung cấp nội dung mà ứng dụng
36được soạn bởi.  Nó đặt tên các lớp triển khai từng thành phần và
37công bố các khả năng của chúng (ví dụ, những tin nhắn {@link android.content.Intent
38Intent} mà chúng có thể xử lý).  Những khai báo này cho phép hệ thống Android
39biết các thành phần là gì và chúng có thể được khởi chạy trong những điều kiện nào.</li>
40
41<li>Nó xác định những tiến trình nào sẽ lưu trữ các thành phần ứng dụng.</li>
42
43<li>Nó khai báo các quyền mà ứng dụng phải có để
44truy cập các phần được bảo vệ của API và tương tác với các ứng dụng khác.</li>
45
46<li>Nó cũng khai báo các quyền mà ứng dụng khác phải có để
47tương tác với các thành phần của ứng dụng.</li>
48
49<li>Nó liệt kê các lớp {@link android.app.Instrumentation} cung cấp
50tính năng tạo hồ sơ và các thông tin khác khi ứng dụng đang chạy.  Những khai báo này
51chỉ xuất hiện trong bản kê khai khi ứng dụng đang được phát triển và
52thử nghiệm; chúng bị loại bỏ trước khi ứng dụng được công bố.</li>
53
54<li>Nó khai báo mức tối thiểu của API Android mà ứng dụng
55yêu cầu.</li>
56
57<li>Nó liệt kê các thư viện mà ứng dụng phải được liên kết với.</li>
58</ul>
59
60
61<h2 id="filestruct">Cấu trúc của Tệp Bản kê khai</h2>
62
63<p>
64Sơ đồ bên dưới minh họa cấu trúc chung của tệp bản kê khai và mọi
65phần tử mà nó có thể chứa.  Từng phần tử, cùng với tất cả thuộc tính
66của mình, sẽ được lập tài liệu theo dõi đầy đủ vào một tệp riêng.  Để xem thông tin
67chi tiết về mọi phần tử, hãy nhấp vào tên phần tử trong sơ đồ,
68trong danh sách các phần tử theo thứ tự chữ cái mà tuân theo sơ đồ, hoặc trên bất kỳ
69nội dung nào khác đề cập tới tên phần tử.
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>
129Tất cả phần tử có thể xuất hiện trong tệp bản kê khai được liệt kê ở bên dưới
130theo thứ tự chữ cái.  Đây là những phần tử hợp pháp duy nhất; bạn không thể
131thêm các phần tử hay thuộc tính của chính mình.
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">Các Quy ước Tệp</h2>
164
165<p>
166Một số quy ước và quy tắc áp dụng chung cho tất cả các phần tử và thuộc tính
167trong bản kê khai:
168</p>
169
170<dl>
171<dt><b>Phần tử</b></dt>
172<dd>Chỉ các phần tử
173<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> và
174<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
175là bắt buộc phải có, chúng đều phải có mặt và chỉ có thể xảy ra một lần.
176Hầu hết các phần tử khác có thể xảy ra nhiều lần hoặc không xảy ra &mdash; mặc dù ít
177nhất một vài trong số chúng phải có mặt để bản kê khai thực sự có
178ý nghĩa nào đó.
179
180<p>
181Nếu một phần tử chứa bất kỳ nội dung nào, nó có thể chứa các phần tử khác.
182Tất cả giá trị sẽ được đặt thông qua thuộc tính, chứ không phải là dữ liệu ký tự trong một phần tử.
183</p>
184
185<p>
186Các phần tử cùng cấp thường không theo thứ tự.  Ví dụ, các phần tử
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>, và
189<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
190có thể được trộn lẫn với nhau theo bất kỳ trình tự nào.  (Phần tử
191<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
192là trường hợp ngoại lệ đối với quy tắc này:  Nó phải tuân theo
193<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
194, đối tượng mà nó là bí danh cho.)
195</p></dd>
196
197<dt><b>Thuộc tính</b></dt>
198<dd>Theo cách hiểu thông thường, tất cả thuộc tính đều mang tính tùy chọn.  Tuy nhiên, có một số thuộc tính
199phải được quy định cho một phần tử để hoàn thành mục đích của nó.  Sử dụng
200tài liệu làm hướng dẫn.  Đối với những thuộc tính thực sự tùy chọn, nó đề cập tới một giá trị
201mặc định hoặc thông báo điều gì sẽ xảy ra nếu không có một đặc tả.
202
203<p>Ngoài một số thuộc tính của phần tử
204<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
205gốc, tất cả tên thuộc tính đều bắt đầu bằng một tiền tố {@code android:}&mdash;
206ví dụ, {@code android:alwaysRetainTaskState}.  Do tiền tố này
207phổ dụng, tài liệu thường bỏ sót nó khi tham chiếu tới các thuộc tính
208theo tên.</p></dd>
209
210<dt><b>Khai báo tên lớp</b></dt>
211<dd>Nhiều thuộc tính tương ứng với các đối tượng Java, bao gồm các phần tử cho
212chính ứng dụng (phần tử
213<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
214) và các thành phần chính của nó &mdash; hoạt động
215(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
216dịch vụ
217(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
218hàm nhận quảng bá
219(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
220và trình cung cấp nội dung
221(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
222
223<p>
224Nếu bạn định nghĩa một lớp con như vẫn luôn làm đối với lớp thành phần
225({@link android.app.Activity}, {@link android.app.Service},
226{@link android.content.BroadcastReceiver}, và {@link android.content.ContentProvider}),
227lớp con sẽ được khai báo thông qua một thuộc tính {@code name}.  Tên phải bao gồm
228chỉ định gói đầy đủ.
229Ví dụ, một lớp con {@link android.app.Service} có thể được khai báo như sau:
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>
242Tuy nhiên, do cách viết tốc ký, nếu ký tự đầu tiên của xâu là một dấu chấm,
243xâu sẽ được nối với tên gói của ứng dụng (như được quy định bởi
244thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
245
246<code>, <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
247).  Cách gán sau cũng giống như trên:
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>
260Khi khởi động một thành phần, Android sẽ tạo một thực thể của lớp con được nêu tên.
261Nếu lớp con không được quy định, nó sẽ tạo một thực thể của lớp cơ sở.
262</p></dd>
263
264<dt><b>Nhiều giá trị</b></dt>
265<dd>Nếu có thể quy định nhiều hơn một giá trị, phần tử gần như luôn
266được lặp lại, thay vì liệt kê nhiều giá trị trong một phần tử duy nhất.
267Ví dụ, một bộ lọc ý định có thể liệt kê vài hành động:
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>Giá trị tài nguyên</b></dt>
277<dd>Một số thuộc tính có các giá trị có thể được hiển thị với người dùng &mdash; ví
278dụ, một nhãn và một biểu tượng cho một hoạt động.  Giá trị của những thuộc tính này
279cần được cục bộ hóa và vì thế phải được thiết đặt từ một tài nguyên hoặc chủ đề.  Giá trị
280tài nguyên được biểu diễn theo định dạng sau,</p>
281
282<p style="margin-left: 2em">{@code @[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}</p>
283
284<p>
285trong đó <i>gói</i> có thể được bỏ qua nếu tài nguyên nằm trong cùng gói
286với ứng dụng, <i>kiểu</i> là kiểu của tài nguyên &mdash; chẳng hạn như "xâu" hoặc
287&mdash; "vẽ được" và <i>tên</i> là tên nhận biết tài nguyên cụ thể.
288Ví dụ:
289</p>
290
291<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
292
293<p>
294Các giá trị từ một chủ đề được biểu diễn theo cách tương tự, nhưng với một '{@code ?}'
295thay vì '{@code @}' ở đầu:
296</p>
297
298<p style="margin-left: 2em">{@code ?[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}
299</p></dd>
300
301<dt><b>Giá trị xâu</b></dt>
302<dd>Trường hợp giá trị của một thuộc tính là một xâu, phải sử dụng hai dấu xuyệc ngược ('{@code \\}')
303để thoát các ký tự &mdash; ví dụ, '{@code \\n}' đối với
304một dòng tin tức hoặc '{@code \\uxxxx}' đối với một ký tự Unicode.</dd>
305</dl>
306
307
308<h2 id="filef">Các Tính năng Tệp</h2>
309
310<p>
311Phần sau đây mô tả cách phản ánh một số tính năng của Android
312trong tệp bản kê khai.
313</p>
314
315
316<h3 id="ifs">Bộ lọc Ý định</h3>
317
318<p>
319Các thành phần cốt lõi của một ứng dụng (hoạt động, dịch vụ và hàm nhận
320quảng bá) được kích hoạt bởi <i>ý định</i>.  Ý định là một
321gói thông tin (một đối tượng {@link android.content.Intent}) mô tả một
322hành động mong muốn &mdash; bao gồm dữ liệu sẽ được dựa trên, thể loại của
323thành phần mà sẽ thực hiện hành động, và các chỉ dẫn thích hợp khác.
324Android định vị một thành phần phù hợp để hồi đáp ý định, khởi chạy
325một thực thể mới của thành phần nếu cần, và chuyển cho nó đối tượng đó
326Ý định.
327</p>
328
329<p>
330Các thành phần sẽ quảng cáo khả năng của mình &mdash; các kiểu ý định mà chúng có thể
331hồi đáp &mdash; thông qua <i>các bộ lọc ý định</i>.  Do hệ thống Android phải
332tìm hiểu một thành phần có thể xử lý những ý định nào trước khi khởi chạy thành phần đó,
333bộ lọc ý định được quy định trong bản kê khai như là các phần tử
334<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
335.  Một thành phần có thể có nhiều bộ lọc, mỗi bộ lọc lại mô tả
336một khả năng khác nhau.
337</p>
338
339<p>
340Một ý định mà công khai nêu tên một thành phần mục tiêu sẽ kích hoạt thành phần đó;
341bộ lọc không có vai trò gì ở đây.  Nhưng một ý định mà không quy định một mục tiêu
342theo tên sẽ chỉ có thể kích hoạt thành phần nếu nó có thể chuyển qua một trong các bộ lọc của
343thành phần.
344</p>
345
346<p>
347Để biết thông tin về cách các đối tượng Ý định được kiểm tra thông qua bộ lọc ý định,
348hãy xem tài liệu riêng có tiêu đề
349<a href="{@docRoot}guide/components/intents-filters.html">Ý định
350và Bộ lọc Ý định</a>.
351</p>
352
353
354<h3 id="iconlabel">Biểu tượng và Nhãn</h3>
355
356<p>
357Nhiều phần tử có thuộc tính {@code icon} và {@code label} cho một
358biểu tượng nhỏ và nhãn văn bản mà có thể được hiển thị với người dùng.  Một số cũng có thuộc tính
359{@code description} cho văn bản giải trình dài hơn mà cũng có thể
360được hiển thị trên màn hình.  Ví dụ, phần tử
361<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
362có cả ba thuộc tính này, vì thế khi người dùng được hỏi xem có
363cấp quyền cho một ứng dụng yêu cầu hay không, biểu tượng thể hiện
364quyền, tên của quyền, và mô tả nội dung
365của quyền đó đều có thể được trình bày cho người dùng xem.
366</p>
367
368<p>
369Trong mọi trường hợp, biểu tượng và nhãn được đặt trong một phần tử chứa sẽ trở thành các thiết đặt
370{@code icon} và {@code label} mặc định cho tất cả phần tử con của bộ chứa đó.
371Vì thế, biểu tượng và nhãn được đặt trong phần tử
372<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
373là biểu tượng và nhãn mặc định cho từng thành phần của ứng dụng.
374Tương tự, biểu tượng và nhãn được đặt cho một thành phần &mdash; ví dụ, một phần tử
375<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
376&mdash; sẽ là các cài đặt mặc định cho từng phần tử
377<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
378của thành phần đó.  Nếu một phần tử
379<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
380thiết đặt một nhãn, nhưng hoạt động và bộ lọc ý định của nó thì không,
381nhãn ứng dụng sẽ được coi là nhãn của cả hoạt động và
382bộ lọc ý định.
383</p>
384
385<p>
386Biểu tượng và nhãn được đặt cho một bộ lọc ý định sẽ được sử dụng để biểu diễn một thành phần
387bất cứ khi nào thành phần đó được trình bày với người dùng để thực hiện chức năng
388mà bộ lọc đã quảng cáo.  Ví dụ, một bộ lọc với các thiết đặt
389"{@code android.intent.action.MAIN}" và
390"{@code android.intent.category.LAUNCHER}" quảng cáo một hoạt động
391là hoạt động khởi đầu một ứng dụng &mdash; cụ thể, là
392hoạt động sẽ được hiển thị trong trình khởi chạy ứng dụng.  Vì thế, biểu tượng và nhãn
393được đặt trong bộ lọc là những nội dung được hiển thị trong trình khởi chạy.
394</p>
395
396
397<h3 id="perms">Quyền</h3>
398
399<p>
400Một <i>quyền</i> là sự hạn chế giới hạn truy cập vào một phần của mã
401hoặc vào dữ liệu trên thiết bị.   Giới hạn này được áp đặt nhằm bảo vệ dữ liệu
402và mã trọng yếu, có thể bị lạm dụng để bóp méo hoặc làm hỏng trải nghiệm người dùng.
403</p>
404
405<p>
406Mỗi quyền được nhận biết bằng một nhãn duy nhất.  Thông thường, nhãn cho biết
407hành động bị hạn chế.  Ví dụ, sau đây là một số quyền được định nghĩa
408bởi 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>
417Một tính năng có thể được bảo vệ bởi nhiều nhất một quyền.
418</p>
419
420<p>
421Nếu một ứng dụng cần truy cập vào một tính năng được bảo vệ bởi một quyền,
422nó phải khai báo rằng nó yêu cầu quyền đó cùng với một phần tử
423<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
424trong bản kê khai.  Lúc đó, khi ứng dụng được cài đặt trên
425thiết bị, trình cài đặt sẽ xác định xem có cấp quyền
426được yêu cầu hay không bằng cách kiểm tra các thẩm quyền đã ký chứng chỉ
427của ứng dụng và trong một số trường hợp, bằng cách hỏi người dùng.
428Nếu quyền được cấp, ứng dụng có thể sử dụng các tính năng
429được bảo vệ.  Nếu không, việc thử truy cập những tính năng đó sẽ thất bại
430mà không có bất kỳ thông báo nào cho người dùng.
431</p>
432
433<p>
434Một ứng dụng cũng có thể bảo vệ các thành phần của chính nó (hoạt động, dịch vụ,
435hàm nhận quảng bá và trình cung cấp nội dung) bằng các quyền.  Nó có thể sử dụng
436bất kỳ quyền nào được định nghĩa bởi Android (được liệt kê trong
437{@link android.Manifest.permission android.Manifest.permission}) hoặc được khai báo
438bởi các ứng dụng khác.  Hoặc nó có thể tự định nghĩa quyền của mình.  Một quyền mới được khai báo
439bằng phần tử
440<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
441.  Ví dụ, một hoạt động có thể được bảo vệ như sau:
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>
460Lưu ý rằng trong ví dụ này, quyền {@code DEBIT_ACCT} không chỉ
461được khai báo bằng phần tử
462<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
463, việc sử dụng quyền cũng được yêu cầu bằng phần tử
464<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
465.  Phải yêu cầu sử dụng quyền để các thành phần khác của
466ứng dụng nhằm khởi chạy hoạt động được bảo vệ, mặc dù việc bảo vệ
467do chính ứng dụng áp đặt.
468</p>
469
470<p>
471Trong cùng ví dụ này, nếu thuộc tính {@code permission} được đặt thành một quyền
472được khai báo ở nơi khác
473(chẳng hạn như {@code android.permission.CALL_EMERGENCY_NUMBERS}, sẽ không
474cần phải khai báo lại nó bằng một phần tử
475<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
476.  Tuy nhiên, sẽ vẫn cần phải yêu cầu sử dụng nó bằng
477<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
478</p>
479
480<p>
481Phần tử
482<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
483sẽ khai báo một vùng tên cho nhóm quyền mà sẽ được định nghĩa trong
484mã.  Và
485<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
486sẽ định nghĩa một nhãn cho một tập hợp quyền (cả được khai báo trong bản kê khai bằng phần tử
487<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
488và được khai báo ở chỗ khác).  Nó chỉ ảnh hưởng tới cách các quyền được
489nhóm lại khi được trình bày với người dùng.  Phần tử
490<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
491không quy định những quyền nào thuộc về nhóm;
492nó chỉ đặt cho nhóm một cái tên.  Một quyền được đặt vào nhóm
493bằng cách gán tên nhóm với thuộc tính của phần tử
494<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
495,
496<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
497.
498</p>
499
500
501<h3 id="libs">Thư viện</h3>
502
503<p>
504Mọi ứng dụng đều được liên kết với thư viện Android mặc định, nó
505bao gồm các gói cơ bản để xây dựng ứng dụng (bằng các lớp thông dụng
506chẳng hạn như Hoạt động, Dịch vụ, Ý định, Dạng xem, Nút, Ứng dụng, Trình cung cấp Nội dung,
507v.v.).
508</p>
509
510<p>
511Tuy nhiên, một số gói nằm trong thư viện của chính mình.  Nếu ứng dụng của bạn
512sử dụng mã từ bất kỳ gói nào trong những gói này, nó phải công khai yêu cầu được liên kết
513với chúng.  Bản kê khai phải chứa một phần tử
514<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
515riêng để đặt tên cho từng thư viện.  (Tên thư viện có thể được tìm thấy trong tài liệu
516của gói.)
517</p>
518