处理来自ACTION_GET_CONTENT的回复

时间:2014-07-29 20:29:35

标签: android

是否有人建议处理来自ACTION_GET_CONTENT意图的URI结果的最佳方法?

我发现处理意图的应用程序提供了不同的数据。在三个不同的文件选择器中从下载目录中选择文件时,我得到了明显不同的结果。

  • KitKat下载图库: 内容://com.android.providers.downloads.documents/document/1438
  • Genymotion(CyanogenMod)浏览器: file:///storage/emulated/0/Download/334SIGCO-PHRH-FEB14.xls
  • 的Android 文件管理器: 内容://com.smartwho.SmartFileManager/mimetype//storage/emulated/0/Download/334 PhrPrint.xls

我担心当我发布我的应用程序时,我会收到用户的回复,我在代码中没有预料到它会崩溃。鉴于我测试的三个工具都提供了不同的答案,我担心会在野外发生什么。

最终,我需要将所选文件的内容读入InputStream,并将数据(.xls通过jxl)读入我的数据结构。但首先我需要检查数据以获取文件名并验证数据类型,以便我可以向用户提供他们具有有效文件类型的反馈。

我可以使用ContentResolver通过KitKat下载库执行此操作,但是其他两个选项的代码都失败了。代码如下:

public void setFileUri(Uri fileUri) {
   ContentResolver resolver = mFragment.getActivity().getContentResolver();

//Check if the file is of the right data type
if(resolver.getType(fileUri).equals(REQUIRED_FILE_TYPE)) {
  mFileUri = fileUri;
  mComplete = true;
}
Cursor cursor = resolver.query(fileUri, null, null, null, null);
cursor.moveToFirst();
((FileSelectFragment)mFragment).setFileNameView(cursor.getString(
        cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)),
    mComplete);

}

提前谢谢。

0 个答案:

没有答案