如何获取访问我的应用程序内容提供者的应用程序包名称?
How to get the package name of the app which access content provider of my app?
实际上,当任何其他应用程序从我的应用程序共享的内容提供者获取数据时,我想要某种广播
您可以使用 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;
}
也许我来晚了,但在 API19 及更高版本中你可以调用
getCallingPackage();
在您的 ContentProvider 中执行此操作。
查看 Android Reference 了解更多详情。
实际上,当任何其他应用程序从我的应用程序共享的内容提供者获取数据时,我想要某种广播
您可以使用 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;
}
也许我来晚了,但在 API19 及更高版本中你可以调用
getCallingPackage();
在您的 ContentProvider 中执行此操作。
查看 Android Reference 了解更多详情。