blob: 06668b4c685c3eb2b67238f966686d646aac45ed [file] [log] [blame]
page.title=Bn kê khai ng dng
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Trong tài liu này</h2>
<ol>
<li><a href="#filestruct">Cu trúc ca Tp Bn kê khai</a></li>
<li><a href="#filec">Các Quy ước Tp</a>
<li><a href="#filef">Các Tính năng Tp</a>
<ol>
<li><a href="#ifs">B lc Ý định</a></li>
<li><a href="#iconlabel">Biu tượng và Nhãn</a></li>
<li><a href="#perms">Quyn</a></li>
<li><a href="#libs">Thư vin</a></li>
</ol></li>
</ol>
</div>
</div>
<p>
Mi ng dng đều phi có mt tp AndroidManifest.xml (chính xác là
tên gi này) trong thư mc gc ca mình. <span itemprop="description">Tp bn kê khai
trình bày nhng thông tin thiết yếu v ng dng ca bn vi h thng Android,
thông tin mà h thng phi có trước khi có th chy bt k mã nào
ca ng dng.</span> Ngoài mt s mc đích khác, bn kê khai thc hin nhng điu sau:
</p>
<ul>
<li>Nó đặt tên gói Java cho ng dng.
Tên gói đóng vai trò như mt mã nhn din duy nht cho ng dng.</li>
<li>Nó mô t các thành phn ca ng dng &mdash; hot động,
dch vụ, hàm nhn qung bá, và trình cung cp ni dung mà ng dng
được son bi. Nó đặt tên các lp trin khai tng thành phn và
công b các kh năng ca chúng (ví dụ, nhng tin nhn {@link android.content.Intent
Intent} mà chúng có th x lý). Nhng khai báo này cho phép h thng Android
biết các thành phn là gì và chúng có th được khi chy trong nhng điu kin nào.</li>
<li>Nó xác định nhng tiến trình nào s lưu tr các thành phn ng dng.</li>
<li>Nó khai báo các quyn mà ng dng phi có để
truy cp các phn được bo v ca API và tương tác vi các ng dng khác.</li>
<li>Nó cũng khai báo các quyn mà ng dng khác phi có để
tương tác vi các thành phn ca ng dng.</li>
<li>Nó lit kê các lp {@link android.app.Instrumentation} cung cp
tính năng to h sơ và các thông tin khác khi ng dng đang chy. Nhng khai báo này
ch xut hin trong bn kê khai khi ng dng đang được phát trin và
th nghim; chúng b loi b trước khi ng dng được công bố.</li>
<li>Nó khai báo mc ti thiu ca API Android mà ng dng
yêu cu.</li>
<li>Nó lit kê các thư vin mà ng dng phi được liên kết vi.</li>
</ul>
<h2 id="filestruct">Cu trúc ca Tp Bn kê khai</h2>
<p>
Sơ đồ bên dưới minh ha cu trúc chung ca tp bn kê khai và mi
phn t mà nó có th cha. Tng phn tử, cùng vi tt c thuc tính
ca mình, s được lp tài liu theo dõi đầy đủ vào mt tp riêng. Để xem thông tin
chi tiết v mi phn tử, hãy nhp vào tên phn t trong sơ đồ,
trong danh sách các phn t theo th t ch cái mà tuân theo sơ đồ, hoc trên bt k
ni dung nào khác đề cp ti tên phn tử.
</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
<a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a> <!-- ##api level 3## -->
<a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a> <!-- ##api level 4## -->
<a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a> <!-- ##api level 4## -->
<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a> <!-- ##api level 9## -->
<a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a> <!-- ##api level 11## -->
<a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
<a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
<a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
<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>
<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
<a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
<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>
<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
<a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
<a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
<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>
<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
<a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
<a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
<a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
<a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
</pre>
<p>
Tấ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
theo thứ tự chữ cái. Đây là những phần tử hợp pháp duy nhất; bạn không thể
thêm các phần tử hay thuộc tính của chính mình.
</p>
<p style="margin-left: 2em">
<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code> <!-- ##api level 4## -->
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code> <!-- ##api level 3## -->
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code> <!-- ##api level 4## -->
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
</p>
<h2 id="filec">Các Quy ước Tệp</h2>
<p>
Mộ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
trong bản kê khai:
</p>
<dl>
<dt><b>Phần tử</b></dt>
<dd>Chỉ các phần tử
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> và
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
là 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.
Hầ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
nhất một vài trong số chúng phải có mặt để bản kê khai thực sự có
ý nghĩa nào đó.
<p>
Nế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.
Tấ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ử.
</p>
<p>
Các phần tử cùng cấp thường không theo thứ tự. Ví dụ, các phần tử
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, và
<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
có thể được trộn lẫn với nhau theo bất kỳ trình tự nào. (Phần tử
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
là trường hợp ngoại lệ đối với quy tắc này: Nó phải tuân theo
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
, đối tượng mà nó là bí danh cho.)
</p></dd>
<dt><b>Thuộc tính</b></dt>
<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
phải được quy định cho một phần tử để hoàn thành mục đích của nó. Sử dụng
tà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ị
mặc định hoặc thông báo điều gì sẽ xảy ra nếu không có một đặc tả.
<p>Ngoài một số thuộc tính của phần tử
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
gốc, tất cả tên thuộc tính đều bắt đầu bằng một tiền tố {@code android:}&mdash;
ví dụ, {@code android:alwaysRetainTaskState}. Do tiền tố này
phổ dụng, tài liệu thường bỏ sót nó khi tham chiếu tới các thuộc tính
theo tên.</p></dd>
<dt><b>Khai báo tên lớp</b></dt>
<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
chính ứng dụng (phần tử
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
) và các thành phần chính của nó &mdash; hoạt động
(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>),
dịch vụ
(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>),
hàm nhận quảng bá
(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>),
và trình cung cấp nội dung
(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).
<p>
Nế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
({@link android.app.Activity}, {@link android.app.Service},
{@link android.content.BroadcastReceiver}, và {@link android.content.ContentProvider}),
lớ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
chỉ định gói đầy đủ.
Ví dụ, một lớp con {@link android.app.Service} có thể được khai báo như sau:
</p>
<pre>&lt;manifest . . . &gt;
&lt;application . . . &gt;
&lt;service android:name="com.example.project.SecretService" . . . &gt;
. . .
&lt;/service&gt;
. . .
&lt;/application&gt;
&lt;/manifest&gt;</pre>
<p>
Tuy 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,
xâu sẽ được nối với tên gói của ứng dụng (như được quy định bởi
thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
<code>, <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
). Cách gán sau cũng ging như trên:
</p>
<pre>&lt;manifest package="com.example.project" . . . &gt;
&lt;application . . . &gt;
&lt;service android:name=".SecretService" . . . &gt;
. . .
&lt;/service&gt;
. . .
&lt;/application&gt;
&lt;/manifest&gt;</pre>
<p>
Khi khi động mt thành phn, Android s to mt thc th ca lp con được nêu tên.
Nếu lp con không được quy định, nó s to mt thc th ca lp cơ sở.
</p></dd>
<dt><b>Nhiu giá trị</b></dt>
<dd>Nếu có th quy định nhiu hơn mt giá trị, phn t gn như luôn
được lp li, thay vì lit kê nhiu giá tr trong mt phn t duy nht.
Ví dụ, mt b lc ý định có th lit kê vài hành động:
<pre>&lt;intent-filter . . . &gt;
&lt;action android:name="android.intent.action.EDIT" /&gt;
&lt;action android:name="android.intent.action.INSERT" /&gt;
&lt;action android:name="android.intent.action.DELETE" /&gt;
. . .
&lt;/intent-filter&gt;</pre></dd>
<dt><b>Giá tr tài nguyên</b></dt>
<dd>Mt s thuc tính có các giá tr có th được hin th vi người dùng &mdash; ví
dụ, mt nhãn và mt biu tượng cho mt hot động. Giá tr ca nhng thuc tính này
cn được cc b hóa và vì thế phi được thiết đặt t mt tài nguyên hoc ch đề. Giá tr
tài nguyên được biu din theo định dng sau,</p>
<p style="margin-left: 2em">{@code @[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}</p>
<p>
trong đó <i>gói</i> có th được b qua nếu tài nguyên nm trong cùng gói
vi ng dng, <i>kiu</i> là kiu ca tài nguyên &mdash; chng hn như "xâu" hoc
&mdash; "vẽ được" và <i>tên</i> là tên nhn biết tài nguyên c thể.
Ví dụ:
</p>
<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
<p>
Các giá tr t mt ch đề được biu din theo cách tương tự, nhưng vi mt '{@code ?}'
thay vì '{@code @}' đầu:
</p>
<p style="margin-left: 2em">{@code ?[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}
</p></dd>
<dt><b>Giá tr xâu</b></dt>
<dd>Trường hp giá tr ca mt thuc tính là mt xâu, phi s dng hai du xuyc ngược ('{@code \\}')
để thoát các ký t &mdash; ví dụ, '{@code \\n}' đối vi
mt dòng tin tc hoc '{@code \\uxxxx}' đối vi mt ký t Unicode.</dd>
</dl>
<h2 id="filef">Các Tính năng Tp</h2>
<p>
Phn sau đây mô t cách phn ánh mt s tính năng ca Android
trong tp bn kê khai.
</p>
<h3 id="ifs">B lc Ý định</h3>
<p>
Các thành phn ct lõi ca mt ng dng (hot động, dch v và hàm nhn
qung bá) được kích hot bi <i>ý định</i>. Ý định là mt
gói thông tin (mt đối tượng {@link android.content.Intent}) mô t mt
hành động mong mun &mdash; bao gm d liu s được da trên, th loi ca
thành phn mà s thc hin hành động, và các ch dn thích hp khác.
Android định v mt thành phn phù hp để hi đáp ý định, khi chy
mt thc th mi ca thành phn nếu cn, và chuyn cho nó đối tượng đó
Ý định.
</p>
<p>
Các thành phn s qung cáo kh năng ca mình &mdash; các kiu ý định mà chúng có th
hi đáp &mdash; thông qua <i>các b lc ý định</i>. Do h thng Android phi
tìm hiu mt thành phn có th x lý nhng ý định nào trước khi khi chy thành phn đó,
b lc ý định được quy định trong bn kê khai như là các phn t
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
. Mt thành phn có th có nhiu b lc, mi b lc li mô t
mt kh năng khác nhau.
</p>
<p>
Mt ý định mà công khai nêu tên mt thành phn mc tiêu s kích hot thành phn đó;
b lc không có vai trò gì đây. Nhưng mt ý định mà không quy định mt mc tiêu
theo tên s ch có th kích hot thành phn nếu nó có th chuyn qua mt trong các b lc ca
thành phn.
</p>
<p>
Để biết thông tin v cách các đối tượng Ý định được kim tra thông qua b lc ý định,
hãy xem tài liu riêng có tiêu đề
<a href="{@docRoot}guide/components/intents-filters.html" định
và B lc Ý định</a>.
</p>
<h3 id="iconlabel">Biu tượng và Nhãn</h3>
<p>
Nhiu phn t có thuc tính {@code icon} và {@code label} cho mt
biu tượng nh và nhãn văn bn mà có th được hin th vi người dùng. Mt s cũng có thuc tính
{@code description} cho văn bn gii trình dài hơn mà cũng có th
được hin th trên màn hình. Ví dụ, phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
có c ba thuc tính này, vì thế khi người dùng được hi xem có
cp quyn cho mt ng dng yêu cu hay không, biu tượng th hin
quyn, tên ca quyn, và mô t ni dung
ca quyn đó đều có th được trình bày cho người dùng xem.
</p>
<p>
Trong mi trường hp, biu tượng và nhãn được đặt trong mt phn t cha s tr thành các thiết đặt
{@code icon} và {@code label} mc định cho tt c phn t con ca b cha đó.
Vì thế, biu tượng và nhãn được đặt trong phn t
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
là biu tượng và nhãn mc định cho tng thành phn ca ng dng.
Tương tự, biu tượng và nhãn được đặt cho mt thành phn &mdash; ví dụ, mt phn t
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
&mdash; s là các cài đặt mc định cho tng phn t
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
ca thành phn đó. Nếu mt phn t
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
thiết đặt mt nhãn, nhưng hot động và b lc ý định ca nó thì không,
nhãn ng dng s được coi là nhãn ca c hot động và
b lc ý định.
</p>
<p>
Biu tượng và nhãn được đặt cho mt b lc ý định s được s dng để biu din mt thành phn
bt c khi nào thành phn đó được trình bày vi người dùng để thc hin chc năng
mà b lc đã qung cáo. Ví dụ, mt b lc vi các thiết đặt
"{@code android.intent.action.MAIN}" và
"{@code android.intent.category.LAUNCHER}" qung cáo mt hot động
là hot động khi đầu mt ng dng &mdash; c thể, là
hot động s được hin th trong trình khi chy ng dng. Vì thế, biu tượng và nhãn
được đặt trong b lc là nhng ni dung được hin th trong trình khi chy.
</p>
<h3 id="perms">Quyn</h3>
<p>
Mt <i>quyn</i> là s hn chế gii hn truy cp vào mt phn ca mã
hoc vào d liu trên thiết bị. Gii hn này được áp đặt nhm bo v d liu
và mã trng yếu, có th b lm dng để bóp méo hoc làm hng tri nghim người dùng.
</p>
<p>
Mi quyn được nhn biết bng mt nhãn duy nht. Thông thường, nhãn cho biết
hành động b hn chế. Ví dụ, sau đây là mt s quyn được định nghĩa
bi Android:
</p>
<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
<br/>{@code android.permission.READ_OWNER_DATA}
<br/>{@code android.permission.SET_WALLPAPER}
<br/>{@code android.permission.DEVICE_POWER}</p>
<p>
Mt tính năng có th được bo v bi nhiu nht mt quyn.
</p>
<p>
Nếu mt ng dng cn truy cp vào mt tính năng được bo v bi mt quyn,
nó phi khai báo rng nó yêu cu quyn đó cùng vi mt phn t
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
trong bn kê khai. Lúc đó, khi ng dng được cài đặt trên
thiết bị, trình cài đặt s xác định xem có cp quyn
được yêu cu hay không bng cách kim tra các thm quyn đã ký chng ch
ca ng dng và trong mt s trường hp, bng cách hi người dùng.
Nếu quyn được cp, ng dng có th s dng các tính năng
được bo vệ. Nếu không, vic th truy cp nhng tính năng đó s tht bi
mà không có bt k thông báo nào cho người dùng.
</p>
<p>
Mt ng dng cũng có th bo v các thành phn ca chính nó (hot động, dch vụ,
hàm nhn qung bá và trình cung cp ni dung) bng các quyn. Nó có th s dng
bt k quyn nào được định nghĩa bi Android (được lit kê trong
{@link android.Manifest.permission android.Manifest.permission}) hoc được khai báo
bi các ng dng khác. Hoc nó có th t định nghĩa quyn ca mình. Mt quyn mi được khai báo
bng phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
. Ví dụ, mt hot động có th được bo v như sau:
</p>
<pre>
&lt;manifest . . . &gt;
&lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
&lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
. . .
&lt;application . . .&gt;
&lt;activity android:name="com.example.project.FreneticActivity"
android:permission="com.example.project.DEBIT_ACCT"
. . . &gt;
. . .
&lt;/activity&gt;
&lt;/application&gt;
&lt;/manifest&gt;
</pre>
<p>
Lưu ý rng trong ví d này, quyn {@code DEBIT_ACCT} không ch
được khai báo bng phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
, vic s dng quyn cũng được yêu cu bng phn t
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
. Phi yêu cu s dng quyn để các thành phn khác ca
ng dng nhm khi chy hot động được bo vệ, mc dù vic bo v
do chính ng dng áp đặt.
</p>
<p>
Trong cùng ví d này, nếu thuc tính {@code permission} được đặt thành mt quyn
được khai báo nơi khác
(chng hn như {@code android.permission.CALL_EMERGENCY_NUMBERS}, s không
cn phi khai báo li nó bng mt phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
. Tuy nhiên, s vn cn phi yêu cu s dng nó bng
<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
</p>
<p>
Phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
s khai báo mt vùng tên cho nhóm quyn mà s được định nghĩa trong
mã. Và
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
s định nghĩa mt nhãn cho mt tp hp quyn (c được khai báo trong bn kê khai bng phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
và được khai báo ch khác). Nó ch nh hưởng ti cách các quyn được
nhóm li khi được trình bày vi người dùng. Phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
không quy định nhng quyn nào thuc v nhóm;
nó ch đặt cho nhóm mt cái tên. Mt quyn được đặt vào nhóm
bng cách gán tên nhóm vi thuc tính ca phn t
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
,
<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
.
</p>
<h3 id="libs">Thư vin</h3>
<p>
Mi ng dng đều được liên kết vi thư vin Android mc định, nó
bao gm các gói cơ bn để xây dng ng dng (bng các lp thông dng
chng hn như Hot động, Dch vụ, Ý định, Dng xem, Nút, ng dng, Trình cung cp Ni dung,
v.v.).
</p>
<p>
Tuy nhiên, mt s gói nm trong thư vin ca chính mình. Nếu ng dng ca bn
s dng mã t bt k gói nào trong nhng gói này, nó phi công khai yêu cu được liên kết
vi chúng. Bn kê khai phi cha mt phn t
<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
riêng để đặt tên cho tng thư vin. (Tên thư vin có th được tìm thy trong tài liu
ca gói.)
</p>