如果从文件管理器中选择了文件,为什么具有意图动作ACTION_OPEN_DOCUMENT的Android File Chooser在某些设备上不起作用?

时间:2019-04-01 10:41:09

标签: android android-intent redmi-device

我正在尝试在Android上使用意图动作ACTION_OPEN_DOCUMENT选择PDF文件,但在某些设备上为null。

我希望用户仅从他的设备中选择PDF文件。为此,我使用了意图动作ACTION_OPEN_DOCUMENT。

这在大多数设备上都能正常工作,但在大多数小米设备上,在文件选择上,尝试使用选项“文件管理器”在onActivityResult中获取意图数据intent.getData()时提供了null,如图所示在下面。

我试图避免使用操作ACTION_GET_CONTENT,因为第三方应用程序不仅将内容限制为PDF。其他应用程序也允许使用非PDF格式。

file chooser image

在从“文件管理器”菜单中选择文件的图像中,其null为intent.getData(),但是当我从“文档”选项中选择文档时,它的工作正常。

下面是文件选择器请求的代码

Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(Intent.createChooser(intent, "Choose a file"), Constants.FILE_CHOOSER);

选择文件后

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        final Uri uri = intent.getData(); //Uri is null
    }
}

我期望intent.getData()中有一些数据,但它给出的是空值。

致命异常:java.lang.RuntimeException:无法将结果ResultInfo {who = null,request = 501,result = -1,data = Intent {(has extras}}}传递给活动{com.avail.easyloans.android /com.avail.easyloans.feature.cashup.activities.documents.ActivityUploadBankStmt}:java.lang.NullPointerException:尝试在服务器上调用虚拟方法'java.lang.String android.net.Uri.getAuthority()'空对象引用

可能是什么错误?

0 个答案:

没有答案