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

Pas*_*oid 4 android android-contentprovider android-package-managers

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

Rah*_*ari 9

你可以Binder.getCallingUid()用来获取调用应用程序的uid.然后getPackageManager().getNameForUid(uid)用来获取调用app的包名.

例:

@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;
    }
Run Code Online (Sandbox Code Playgroud)


小智 7

也许我来晚了,但是在 API19 及更高版本中,您可以调用

getCallingPackage();
Run Code Online (Sandbox Code Playgroud)

在您的 ContentProvider 中执行此技巧。

有关更多详细信息,请查看Android 参考