如果您在针对 android 9+ 的项目中遇到此问题,请获取完整的解决方案代码。从这里
然后你可以按照一些步骤: 步骤 1:打开一个意图选择 PDF 文件。
/此代码将有助于打开 Intent.. /
public final int PDF_REQUEST_CODE =1200;
Intent intent=new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(intent,PDF_REQUEST_CODE);
第 2 步:现在捕获上述意图返回的结果。
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==PDF_REQUEST_CODE && resultCode == Activity.RESULT_OK)
{
Uri uri=data.getData();
PdfRendererBasicViewModel pdfRendererBasicViewModel =new
ViewModelProvider(this).get(PdfRendererBasicViewModel.class);
pdfRendererBasicViewModel.setUri(uri);
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PdfRendererBasicFragment())
.commitNow();
}
}
第 3 步:需要对 pdfRendererBasicViewModel 类进行一些修改。首先需要在视图模型中声明设置/获取文件 Uri 的方法。正如我们所说的 setUri()。在 onActivityResult() 方法中。
在那次更新之后,用私有静态 Uri uri 替换 openPdfRenderer() 方法;` private void openPdfRenderer() 抛出 IOException {
if(getUri()!=null){
mFileDescriptor =
getApplication().getContentResolver().openFileDescriptor(getUri(), "r");
}
if (mFileDescriptor != null) {
mPdfRenderer = new PdfRenderer(mFileDescriptor);
}
}`
现在尝试运行...
如果您想要一个完整的解决方案,那么您可以从 github 此处导入