如何获取访问我的应用的内容提供者的应用的包名?
Posted
技术标签:
【中文标题】如何获取访问我的应用的内容提供者的应用的包名?【英文标题】:How to get the package name of the app which access content provider of my app? 【发布时间】:2015-12-29 08:30:11 【问题描述】:实际上,当任何其他应用程序从我的应用程序共享的内容提供商获取数据时,我想要某种广播
【问题讨论】:
【参考方案1】:您可以使用Binder.getCallingUid()
来获取调用应用程序的uid。
然后使用getPackageManager().getNameForUid(uid)
获取调用应用的包名。
示例:
@Override
public Uri insert(Uri uri, ContentValues values)
int code = sUriMatcher.match(uri);
String callingPackageName = getContext().getPackageManager().getNameForUid(
Binder.getCallingUid());
Log.d(TAG, "calling Package Name::" + callingPackageName);
if (callingPackageName.equals(PKG_MY_PACKAGE))
//do what you want
.
.
.
return uri;
【讨论】:
【参考方案2】:也许我来晚了,但在 API19 及以上你可以调用
getCallingPackage();
在您的 ContentProvider 中执行此操作。
查看android Reference了解更多详情。
【讨论】:
以上是关于如何获取访问我的应用的内容提供者的应用的包名?的主要内容,如果未能解决你的问题,请参考以下文章