活动启动,即使它有标签的android:的ProtectionLevel = “签名”
问题描述:
我有2个应用 “A” 和 “B”活动启动,即使它有标签的android:的ProtectionLevel = “签名”
应用 “A” 与C_B签署证书C_A和 “B”
在 “A”
<activity android:name=".ActivityA" android:protectionLevel="signature" android:label="@string/app_name">
<intent-filter>
<action android:name="com.temp.packagea" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在应用程序 “B”
Intent i = new Intent();
i.setAction("com.temp.package");
startActivity(i);
和的问题是,应用程序A启动而不含p来自应用程序B的roblems。
如何保护我的应用程序中使用与我的签名相同的签名的应用程序中的开始活动。
答
protectionLevel
对于清单中的Activity标记不是有效的属性。 protectionLevel
标签适用于<permission>
元素,并在应用程序指定新权限(不是默认的Android系统权限之一)时使用。
它看起来像你试图阻止应用程序调用Activity
(在你的例子中是A),如果它们没有用包含应用程序的相同证书进行签名。您想要在此处执行的操作是使用<permission>
元素在清单(包含A的应用程序的清单)中声明新权限,并将新许可的protectionLevel
设置为Signature
。然后,在Activity
的清单声明中,使用android:permission
属性,以便启动Activity
需要此新权限。对于您希望能够调用Activity
的任何其他应用程序,只需在该其他应用程序的清单中添加一个uses-permission
元素并指定您创建的新权限即可。由于该权限为Signature
权限,系统将在安装新应用程序时自动授予该权限。
尼斯解释! ! – John 2015-08-22 16:22:42