Android SecurityException:权限拒绝:从ProcessRecord打开提供程序org.chromium.chrome.browser.util.ChromeFileProvider
我正在构建一个选择器应用程序,它取代了原生的Android共享对话框。除了我试图通过longpress image>share image从Chrome共享图像外,它工作正常 如果我尝试这样做: Focus Gallery(由Franco制作)>共享(我的应用)>谷歌+>没问题。 Chrome>共享(我的应用)>崩溃 当我尝试访问作为额外_流传递到我的应用程序的content://uri时,我收到一个错误: java.lang.SecurityException:权限拒绝:打开提供程序 org.chromium.chrome.browser.util.ChromeFileProvider来自 ProcessRecord{9a9ad72 13494:com.rejh.sharedr/u0a226}(pid=13494, uid=10226),而不是从uid 10101导出 内容uri如下所示: content://com.android.chrome.FileProvider/images/screenshot/15307085865714015389178311011200.jpg 以下是我的工作(简化): 我在最后一行(contentResolver.query())中得到了错误。奇怪的是,getType()确实有效 活动的舱单声明:Android SecurityException:权限拒绝:从ProcessRecord打开提供程序org.chromium.chrome.browser.util.ChromeFileProvider,android,android-fileprovider,Android,Android Fileprovider,我正在构建一个选择器应用程序,它取代了原生的Android共享对话框。除了我试图通过longpress image>share image从Chrome共享图像外,它工作正常 如果我尝试这样做: Focus Gallery(由Franco制作)>共享(我的应用)>谷歌+>没问题。 Chrome>共享(我的应用)>崩溃 当我尝试访问作为额外_流传递到我的应用程序的content://uri时,我收到一个错误: java.lang.SecurityException:权限拒绝:打开提供程序 org.
<activity
android:name=".ActShareReplace"
android:label="Sharedr"
android:theme="@style/AppTheme.TransparentActivity"
>
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
就我所知,我应该仍然可以访问URI,因为我尝试从接收到意图的同一个活动访问它
顺便说一句,Chrome是迄今为止我唯一遇到问题的应用程序。一位用户报告说共享Whatsapp中的图像会导致类似的错误。顺便说一句,我正在尝试读取图像以便缓存它,然后将其转发到下一个应用程序(Sharedr是共享对话框的替代品,因此应该只转发意图)。我确实尝试过一开始只是转发意图,但是URI权限被破坏(因为拥有该权限的组件已不存在)。“我正在尝试读取图像以便缓存它”--您不需要
query()
。我同意你的症状很奇怪,但是在额外流
场景中没有要求Uri
支持query()
(例如,对于OpenableColumns
)。@REJ尝试添加这个标志,payloadIntent.addFlags(Intent.flag\u GRANT\u READ\u Uri\u PERMISSION);//接收应用程序读取此文件的临时权限
@commonware:我想使用图像名称来缓存文件。如果我尝试openInputStream,我也会遇到同样的错误(但它没有到达那一行,因为它在查询()时崩溃了)@KhaledLela不起作用。这难道不需要清单中的android:grantUriPermission=true?
<activity
android:name=".ActShareReplace"
android:label="Sharedr"
android:theme="@style/AppTheme.TransparentActivity"
>
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>