姬長信(Redy)

android – 与FileProvider共享文件时使用grantU…


我有两个申请.我正在尝试使用FileProvider将应用程序A中的文件共享到应用程序B.应用程序A在应用程序B中的ContentProvider上调用insert方法以插入记录.插入的数据包括我想要从App A共享的文件的Uri.App B中的ContentProvider将尝试从App A读取共享文件.
由于我没有使用Intent来共享文件,因此我在App A中调用Context.grantUriPermission以允许读取(并且有时写入):
mContext.grantUriPermission(MyPackageName, contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

但是,执行此行会给我(名称已更改以保护无辜者):

java.lang.SecurityException: Uid 10066 does not have permission to uri content://au.com.example.AppA.fileprovider/MyFolder/MyFileName
at android.os.Parcel.readException(Parcel.java:1322)
at android.os.Parcel.readException(Parcel.java:1276)
at android.app.ActivityManagerProxy.grantUriPermission(ActivityManagerNative.java:2374)
at android.app.ContextImpl.grantUriPermission(ContextImpl.java:1371)
at android.content.ContextWrapper.grantUriPermission(ContextWrapper.java:400)
at etc...

应用程序A在清单文件中具有以下内容:


    

filepaths.xml有:


    

App A和App B都有以下内容:



我已经尝试在两个应用中定义权限.它们都使用相同的调试签名进行签名:





文件最终的实际路径是:

/data/data/au.com.example.AppA/files/MyFolder

在这一点上,我很难过.我不知道为什么我不能授予我刚在同一个应用程序中创建的文件的权限.所以我的问题是:为什么我会收到此异常,如何成功授予App B权限?