1
我目前正在研究一个项目,它将从特定应用程序中筛选出一些特定的查询,以便安卓通讯录。我想知道如何找出哪个应用程序访问联系人提供程序?我已经浏览了API参考,但它看起来只有获取内容提供者客户端的方法,而不是获取要求访问数据的应用程序。如果有人能解释这一点,这将是很大的帮助!提前致谢!Android:如何找出内容解析器的客户端
我目前正在研究一个项目,它将从特定应用程序中筛选出一些特定的查询,以便安卓通讯录。我想知道如何找出哪个应用程序访问联系人提供程序?我已经浏览了API参考,但它看起来只有获取内容提供者客户端的方法,而不是获取要求访问数据的应用程序。如果有人能解释这一点,这将是很大的帮助!提前致谢!Android:如何找出内容解析器的客户端
从你ContentProvider
就可以得到应用喊你这样的包名:
@NonNull
private static Collection<String> getCallingPackages(Context context) {
int callingUid = Binder.getCallingUid();
if (callingUid == 0) {
return Collections.emptyList();
}
String[] packages = context.getPackageManager().getPackagesForUid(callingUid);
return new ArrayList<>(Arrays.asList(packages));
}
然后,您可以检查包(S)是在白名单上/你保持黑名单。
感谢这个想法 – user7153368
'ContentResolver'没有“客户端”,至少在我将如何使用该术语方面。 – CommonsWare
我试图说应用程序正在调用内容解析器。有没有任何名称? – user7153368
我会调用ContentProvider的客户端。 – CommonsWare