我正在尝试在Android上使用意图动作ACTION_OPEN_DOCUMENT选择PDF文件,但在某些设备上为null。
我希望用户仅从他的设备中选择PDF文件。为此,我使用了意图动作ACTION_OPEN_DOCUMENT。
这在大多数设备上都能正常工作,但在大多数小米设备上,在文件选择上,尝试使用选项“文件管理器”在onActivityResult中获取意图数据intent.getData()时提供了null,如图所示在下面。
我试图避免使用操作ACTION_GET_CONTENT,因为第三方应用程序不仅将内容限制为PDF。其他应用程序也允许使用非PDF格式。
在从“文件管理器”菜单中选择文件的图像中,其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()'空对象引用
可能是什么错误?