天天看點

【android】uses-permission和permission具體解釋

1.<uses-permission>:

官方描寫叙述:

If an application needs access to a feature protected by a permission, it must declare that it requires that permission with a 

<uses-permission>

 element in the manifest. Then, when the application is installed on the device, the installer determines whether or not to grant the requested permission by checking the authorities that signed the application's certificates and, in some cases, asking the user. If the permission is granted, the application is able to use the protected features. If not, its attempts to access those features will simply fail without any notification to the user.

假設一個應用須要訪問一個受permission保護的特性,那這個應用必須在manifest中以<uses-permission>節點聲明它所須要的權限。當這個應用安裝在裝置的時候,安裝器會決定是否授予它所聲明的權限。這有時候會詢問使用者。假設權限被授予了,這個應用才幹使用受保護的特性。否則的話。訪問失敗而且不會通知使用者。

注意:不一定是調用其它應用程式才要聲明<uses-permission>。有時甚至調用自己應用的程式的元件都要聲明!!

!(以下的樣例會說到)

2.<permission>:

An application can also protect its own components (activities, services, broadcast receivers, and content providers) with permissions. It can employ any of the permissions defined by Android (listed in

android.Manifest.permission

) or declared by other applications. Or it can define its own. A new permission is declared with the 

<permission>

 element. 

一個應用程式也能用permissions保護自己的元件。它能使用android系統定義的或者其它應用定義的又或者自身應用定義的permissions。假設要想定義一個新的permission,能夠用

<permission>

 節點來定義。

例如以下:

<permission android:description="string resource"
            android:icon="drawable resource"
            android:label="string resource"
            android:name="string"
            android:permissionGroup="string"
            android:protectionLevel=["normal" | "dangerous" | 
                                     "signature" | "signatureOrSystem"] />      

For example, an activity could be protected as follows:

<manifest . . . >
    <permission android:name="com.example.project.DEBIT_ACCT" . . . />
    <uses-permission android:name="com.example.project.DEBIT_ACCT" />
    . . .
    <application . . .>
        <activity android:name="com.example.project.FreneticActivity"
                  android:permission="com.example.project.DEBIT_ACCT"
                  . . . >
            . . .
        </activity>
    </application>
</manifest>      

Note that, in this example, the 

DEBIT_ACCT

 permission is not only declared with the 

<permission>

 element, its use is also requested with the 

<uses-permission>

 element. Its use must be requested in order for other components of the application to launch the protected activity, even though the protection is imposed by the application itself.

If, in the same example, the 

permission

 attribute was set to a permission declared elsewhere (such as

android.permission.CALL_EMERGENCY_NUMBERS

, it would not have been necessary to declare it again with a

<permission>

 element. However, it would still have been necessary to request its use with 

<uses-permission>

.

注意的是。在這個樣例中。 DEBIT_ACCT這個權限不僅在<permission>中聲明。而且也在<uses-permission>中聲明。要想在這應用的其它元件啟動這個受保護的activity時,在<uses-permission>中聲明DEBIT_ACCT這個權限是必須的,即使這個保護是這個應用本身加上的。(這印證了上面第1點說的)。

注意,假設加入的permission是其它地方定義的,那就不是必需再<permission>聲明一次。可是,仍然用<uses-permission>聲明這個權限。