我有兩個Android應用程序,一個權限提供者和一個請求者。Android權限 - 最佳實踐
的提供商以下清單
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.permissionprovider"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<permission android:description="@string/permission_desc"
android:icon="@drawable/ic_launcher"
android:label="some permission"
android:name="com.example.permissionprovider.CUSTOM"
android:protectionLevel="normal" />
<!-- is the below tag required in the provider?-->
<uses-permission android:name="com.example.permissionprovider.CUSTOM"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.permissionprovider.MainActivity"
android:permission="com.example.permissionprovider.CUSTOM"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我希望這是錯誤的權限設置爲可啓動的活動爲發射器將沒有權限推出這款activity.Is正確的嗎?
提供者的清單是否應聲明提供者應用程序需要權限 - com.example.permissionprovider.CUSTOM,還是不需要,因爲權限是在同一個清單中定義的?
現在我有具有以下明顯
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.permissionrequester"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="com.example.permissionprovider.CUSTOM"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.permissionrequester.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>
</application>
</manifest>
請求者應用程序和請求者嘗試啓動供應商的活動。
Intent i;
PackageManager manager = getPackageManager();
try {
i = manager.getLaunchIntentForPackage("com.example.permissionprovider");
if (i == null)
throw new PackageManager.NameNotFoundException();
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
} }
- 如果提供的應用程序被安裝在前,後跟請求者,則請求者就能啓動供應商的活動,但如果它是首先被安裝在請求者,這不會發生。如何解決這個問題?
非常感謝你:)。添加 到兩個應用程序解決了最後一個問題。問題2我認爲我不太清楚。我希望 只在請求者而不是在提供者中是必需的,除非請求者有一些被相同權限保護的組件並且提供者試圖激活該組件。 –
coderplus