如何获取访问我应用内容提供商的应用的包名?

时间:2015-10-01 10:14:08

标签: android android-contentprovider android-package-managers

实际上,当任何其他应用从我的应用分享的内容提供商处获取数据时,我想要某种广播

2 个答案:

答案 0 :(得分:8)

您可以使用Binder.getCallingUid()来获取调用应用程序的内容。 然后使用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;
    }

答案 1 :(得分:3)

也许我已经很晚了,但是在API19及以上版本中你可以打电话

getCallingPackage();

在ContentProvider中执行此操作。

请查看Android Reference了解更多详情。