0

我使用 ChooserIntent 将文件添加到我的应用程序。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setType("*/*");
Intent chooserIntent = Intent.createChooser(intent,"Choose file to import";
startActivityForResult(chooserIntent, FILE_REQUEST_CODE);

通常,例如,当从内部或外部存储中选择文件(例如图片)时,这会在 onActivityResult() 中返回 content:// Uri。这也适用于 DropBox 和大多数其他存储介质,但在使用 OneDrive 时,它​​返回一个 file:// Uri,导致 Android SDK 24+ 中的 FileUriExposedException。

 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=42, result=-1, data=Intent 
   { act=android.intent.action.GET_CONTENT dat=file:///data/user/0/com.microsoft.skydrive/no_backup/stream_cache/myemail@email.com/5761/bewerbung.rtf typ=text/rtf flg=0x1000003 cmp=com.microsoft.skydrive/.intent.getcontent.ReceiveGetContentActivity }}
   to activity {com.android.documentsui/com.android.documentsui.picker.PickActivity}:
   android.os.FileUriExposedException: file:///data/user/0/com.microsoft.skydrive/no_backup/stream_cache/myemail@email.com/5761/bewerbung.rtf exposed beyond app through Intent.getData()

如何使 OneDrive 返回带有 content:// Uri 的文件(最好)或避免异常导致我的应用程序崩溃?

4

1 回答 1

0

所以显然微软只是没有意识到这个问题,并在我发送支持票后立即修复了它。很好的支持,但他们应该通过 api 24 的发布解决了这个问题。

于 2017-07-20T10:53:27.650 回答