SecurityException:权限拒绝:从ProcessRecord

时间:2018-07-04 13:14:27

标签: android android-fileprovider

我正在构建一个Chooser应用程序,该应用程序将替换本机的Android Share对话框。效果很好,除非我尝试通过长按图像>共享图像从Chrome共享图像。

如果我尝试这样做: Focus Gallery(由Franco提供)>共享(我的应用程序)> Google+>没问题。 Chrome>共享(我的应用程序)>崩溃。

当我尝试访问作为EXTRA_STREAM传递到我的应用程序的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

这是我的工作(简体):

@override 
public void onCreate() {
    handleIntent();

@override 
public void onNewIntent() {
    handleIntent();
}

public void handleIntent() {
    Parcelable parcel = getIntent().getParcelableExtra(Intent.EXTRA_INTENT);
    payloadIntent = new Intent((Intent) parcel);

    Uri extraStreamUri = (Uri) payloadIntent.getExtras().get(Intent.EXTRA_STREAM);
    ContentResolver contentResolver = getContentResolver();
    String fileMimeType = contentResolver.getType(extraStreamUri);
    Cursor returnCursor = contentResolver.query(extraStreamUri, null, null, null, null);
}

我在最后一行(contentResolver.query(query))收到错误。足够奇怪的是,getType()确实可以工作。

活动的清单声明

<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共享图像会导致类似错误。

0 个答案:

没有答案