聲明和使用許可權,聲明使用許可權
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.scott.phone" android:versionCode="1" android:versionName="1.0"> <!-- 聲明一個許可權 --> <permission android:protectionLevel="normal" android:name="scott.permission.MY_CALL_PHONE"/> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 為Activity應用已定義的許可權 --> <activity android:name=".PhoneActivity" android:permission="scott.permission.MY_CALL_PHONE"> <intent-filter> <!-- 注意這個action 在其他應用中可使用此action訪問此Activity --> <action android:name="scott.intent.action.MY_CALL"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <!-- 在同一應用中訪問PhoneActivity也需要加上許可權 --> <uses-permission android:name="scott.permission.MY_CALL_PHONE"/> <uses-sdk android:minSdkVersion="8" /> </manifest>
需要注意的是,在聲明許可權時需要一個android:protectionLevel的屬性,它代表“風險層級”。必須是以下值之一:
normal、dangerous、signature、signatureOrSystem。
normal表示許可權是低風險的,不會對系統、使用者或其他應用程式造成危害。
dangerous表示許可權是高風險的,系統將可能要求使用者輸入相關資訊,才會授予此許可權。
signature告訴Android,只有當應用程式所用數位簽章與聲明此許可權的應用程式所有數位簽章相同時,才能將許可權授給它。
signatureOrSystem告訴Android,將許可權授給具有相同數位簽章的應用程式或Android包類,這一層級適用於非常特殊的情況,比如多個供應商需要通過系統影像共用功能時。
另外一個是android:permissionGroup屬性,表示一個許可權組。可以將許可權放在一個組中,但對於自訂許可權,應該避免設定此屬性。如果確實希望設定此屬性,可以使用以下屬性代替:android.permission-group.SYSTEM_TOOLS。
需要注意的是,在聲明許可權時需要一個android:protectionLevel的屬性,它代表“風險層級”。必須是以下值之一:
normal、dangerous、signature、signatureOrSystem。
normal表示許可權是低風險的,不會對系統、使用者或其他應用程式造成危害。
dangerous表示許可權是高風險的,系統將可能要求使用者輸入相關資訊,才會授予此許可權。
signature告訴Android,只有當應用程式所用數位簽章與聲明此許可權的應用程式所有數位簽章相同時,才能將許可權授給它。
signatureOrSystem告訴Android,將許可權授給具有相同數位簽章的應用程式或Android包類,這一層級適用於非常特殊的情況,比如多個供應商需要通過系統影像共用功能時。
另外一個是android:permissionGroup屬性,表示一個許可權組。可以將許可權放在一個組中,但對於自訂許可權,應該避免設定此屬性。如果確實希望設定此屬性,可以使用以下屬性代替:android.permission-group.SYSTEM_TOOLS。