Android:我可以使用在另一个具有不同签名的应用程序中定义的签名级权限来保护应用程序部分吗?
Android: can I protect an app portion with a signature-level permission that is defined in another app with a different signature?
假设 Android 应用 App1
声明了以下权限:
<permission android:name="unipd.elia.delta.DELTA_SERVICE_MANAGER"
android:description="@string/startDeltaServicePermission_description"
android:protectionLevel="signature"/>
显然,此声明意味着只有使用与 App1
相同密钥签名的其他应用程序才能 使用(获取)该权限。
但是,我的问题是:另一个应用程序 App2
可以使用 与 App1
、 不同的 密钥签名吗?用那个权限保护自己的一部分?也就是说,App2
可以这样做吗:
<service android:name=".DeltaLoggingService" android:process=":remote" android:exported="true"
android:permission="unipd.elia.delta.DELTA_SERVICE_MANAGER" />
即使 App2
未使用与 App1
相同的密钥签名?
编辑:万一有人感兴趣,真实世界的场景是这样的:App1
可以与充当它的插件的其他应用程序交互,我想允许第三方开发新的插件App1
可以使用。但是,我不希望 App1 以外的应用程序(或任何非我开发的应用程序)与此类插件进行交互。
好吧,在等待答案的过程中,我有时间测试自己,是的,它有效。
假设 Android 应用 App1
声明了以下权限:
<permission android:name="unipd.elia.delta.DELTA_SERVICE_MANAGER"
android:description="@string/startDeltaServicePermission_description"
android:protectionLevel="signature"/>
显然,此声明意味着只有使用与 App1
相同密钥签名的其他应用程序才能 使用(获取)该权限。
但是,我的问题是:另一个应用程序 App2
可以使用 与 App1
、 不同的 密钥签名吗?用那个权限保护自己的一部分?也就是说,App2
可以这样做吗:
<service android:name=".DeltaLoggingService" android:process=":remote" android:exported="true"
android:permission="unipd.elia.delta.DELTA_SERVICE_MANAGER" />
即使 App2
未使用与 App1
相同的密钥签名?
编辑:万一有人感兴趣,真实世界的场景是这样的:App1
可以与充当它的插件的其他应用程序交互,我想允许第三方开发新的插件App1
可以使用。但是,我不希望 App1 以外的应用程序(或任何非我开发的应用程序)与此类插件进行交互。
好吧,在等待答案的过程中,我有时间测试自己,是的,它有效。