实际上,当任何其他应用程序从我的应用程序共享的内容提供商获取数据时,我想要某种广播
您可以使用
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;
}
如果您只想检查调用者是否是另一个应用程序,您甚至不需要包名称 - 只需比较 Binder.getCallingUid 和 Process.myUid 的 UID:
if (Binder.getCallingUid() != Process.myUid()) {
// An external app has called this
}