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 — 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<?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> 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"><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">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"><manifest></a></code> và 174<code><a href="{@docRoot}guide/topics/manifest/application-element.html"><application></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 — 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"><activity></a></code>, 188<code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></a></code>, và 189<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></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"><activity-alias></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"><activity></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"><manifest></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:}— 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"><application></a></code> 214) và các thành phần chính của nó — hoạt động 215(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code>), 216dịch vụ 217(<code><a href="{@docRoot}guide/topics/manifest/service-element.html"><service></a></code>), 218hàm nhận quảng bá 219(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html"><receiver></a></code>), 220và trình cung cấp nội dung 221(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html"><provider></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><manifest . . . > 233 <application . . . > 234 <service android:name="com.example.project.SecretService" . . . > 235 . . . 236 </service> 237 . . . 238 </application> 239</manifest></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"><manifest></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><manifest package="com.example.project" . . . > 251 <application . . . > 252 <service android:name=".SecretService" . . . > 253 . . . 254 </service> 255 . . . 256 </application> 257</manifest></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><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>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 — 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 — chẳng hạn như "xâu" hoặc 287— "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><activity android:icon="@drawable/smallPic" . . . ></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ự — 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 — 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 — các kiểu ý định mà chúng có thể 331hồi đáp — 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"><intent-filter></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"><permission></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"><application></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 — ví dụ, một phần tử 375<code><a href="{@docRoot}guide/topics/manifest/activity-element.html"><activity></a></code> 376— 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"><intent-filter></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"><application></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 — 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"><uses-permission></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"><permission></a></code> 441. Ví dụ, một hoạt động có thể được bảo vệ như sau: 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> 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"><permission></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"><uses-permission></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"><permission></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"><uses-permission></a></code>. 478</p> 479 480<p> 481Phần tử 482<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html"><permission-tree></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"><permission-group></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"><permission></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"><permission-group></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"><permission></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"><uses-library></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