某些图像编辑器应用程序不会通过意图接受提供的URI

时间:2016-12-17 16:40:14

标签: android android-intent intentfilter

当我从提供的对话框中选择我的应用程序以选择媒体时,我尝试将意图的结果(我的应用程序中所选媒体的URI)发送回来电应用程序。对于大多数应用程序而言,它可以完美运行,但在像Pixlr这样的应用程序上它会显示cannot open the image。还有什么我应该添加到其他应用程序正确请求的URI的意图,以涵盖某些特定的应用程序吗?

这是我的intent filter

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.PICK" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
    <data android:mimeType="video/*" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.OPENABLE" />
    <data android:mimeType="image/*" />
    <data android:mimeType="video/*" />
</intent-filter>

,这就是我尝试从我的应用中发送媒体采摘结果的方式:

Intent pickResultIntent = new Intent().setData(mediaContentUri);
setResult(Activity.RESULT_OK, pickResultIntent);
finish();

这就是我获得mediaUri的方式:

mediaContentUri = ContentUris.withAppendedId(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    mediaId);

1 个答案:

答案 0 :(得分:0)

comment

CommonsWare回答
Intent pickResultIntent = new Intent().setData(mediaContentUri);
pickResultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
setResult(Activity.RESULT_OK, pickResultIntent);
finish();