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

标签 android android-contentprovider android-package-managers

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

最佳答案

您可以使用 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;
    }

关于android - 如何获取访问我的应用程序内容提供者的应用程序包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32884981/

相关文章:

android - Android 中包管理器的 Aidl 代码链接

android - 解决 "Package manager has died"RuntimeException

android - 无法通过我的 Android 应用程序访问我的 Google 电子表格

android 获取联系人详细信息,例如号码和缩略图

android - 使用 ADB 更改 Android 设备方向

android - 通过 android.widget.RemoteViewsService 访问时的 Content Provider 权限

java - 可以解析内容uri

android - 添加 PACKAGE_USAGE_STATS [Android Lollipop] 时 Manifest.xml 出错

java - 应用程序结束后如何将数据保存在数组中?

android - 在android中右滑关闭窗口