我正在尝试在 Android 上使用意图操作 ACTION_OPEN_DOCUMENT 来选择 PDF 文件,但在某些设备上它为 null。
我希望用户仅从他的设备中选择 PDF 文件。为此,我使用了意图操作 ACTION_OPEN_DOCUMENT。
这在大多数设备上都能正常工作,但在一些主要是小米的设备上,在文件选择时,它会在尝试使用文件管理器选项在 onActivityResult 中获取意图数据 intent.getData() 时给出 null ,如下图所示。
我试图避免使用操作 ACTION_GET_CONTENT,因为第 3 方应用程序不会将内容限制为仅 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() 中有一些数据,但它给出了 null。
致命异常:java.lang.RuntimeException:向活动 {com.avail.easyloans.android/com. avail.easyloans.feature.cashup.activities.documents.ActivityUploadBankStmt}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.String android.net.Uri.getAuthority()'
可能的错误是什么?