Google+相片ACTION_VIEW,FLAG_GRANT_PERSISTABLE_URI_PERMISSION异常

时间:2014-09-25 10:34:17

标签: android android-intent android-contentprovider android-support-library android-fileprovider

在我的应用程序中,我有内部文件,我希望能够在外部查看器中打开,具体取决于文件类型。我在应用程序清单中设置了类似以下的FileProvider:

<provider
    android:name="android.support.v4.content.FileProvider"           
    android:authorities="com.myapp.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/paths" />
</provider>

我使用以下代码显示应用程序选择器以查看文件。

Uri contentUri = getUriForFile(getApplicationContext(), "com.myapp.fileprovider", thisFile);

Intent viewIntent = new Intent(Intent.ACTION_VIEW);
String mimeType = getApplicationContext().getContentResolver().getType(contentUri);

viewIntent.setDataAndType(contentUri, mimeType);
viewIntent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);

try {
    startActivity(viewIntent);
} catch(ActivityNotFoundException e) {}

这适用于大多数应用,但如果我在列表中选择了Google+照片应用,虽然图片在Google+照片中可以正常播放,如果我尝试通过用手指捏住放大图像,它会立即崩溃。似乎Google+照片失去了对该文件的访问权限,当它再次尝试再次阅读时,它将被拒绝访问。

我尝试过的所有其他应用都很完美 任何建议赞赏

0 个答案:

没有答案