如何将对ContentProvider的访问权限仅限于我的应用程序?

Bar*_*man 3 android android-contentresolver android-contentprovider

我想导出一个ContentProvider供另一个MY应用程序使用.如何阻止其他应用访问它?如果我使用android:permission属性,第三方应用程序是否只能将该权限应用于他们的应用程序?我真的需要锁定对我的应用程序的访问权限.

提前致谢...

Com*_*are 9

如果我使用android:permission属性,第三方应用程序是否只能将该权限应用于他们的应用程序?

好吧,你可以使用signature-level自定义权限(android:protectionLevel="signature").然后,持有权限的应用程序和应用程序通过权限进行自我辩护必须使用相同的签名密钥进行签名.

Android中存在一个错误/限制,即使攻击者未通过您的签名密钥签名,也可以允许在您的应用之前安装的攻击者保留此权限.我在本报告中更详细地介绍了这一点(因为它对于SO答案来说有点复杂)并且有一个PermissionUtils可以帮助您检测到这种情况.