在阅读了几个Q / A后,我仍然无法找到适合我当前问题的答案。
我有一个pdf文件(在编译时已知),它存储在my / res / raw文件夹中。
我尝试使用以下方法加载文件:
InputStream is = getResources().openRawResource(R.raw.mypdf);
然后我想在设备上使用首选的pdf-reader显示pdf(在意图中):
Intent i;
i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(file,"application/pdf");
startActivity(i);
问题在于意图采用“文件”类型,而我的pdf则被视为“输入流”。
问题是:我如何显示pdf文件?即如何显示InputStream?或者如何存储pdf文件以允许使用新的File()?
打开答案 0 :(得分:1)
尝试这个..
//将pdf放在资产文件夹中只是为了尝试
Uri file= Uri.parse("file:///android_asset/mypdf.pdf");
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.toString()));
try{
Intent i;
i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(file,mimeType);
startActivity(i);
}catch (ActivityNotFoundException e) {
Toast.makeText(this,
"No Application Available to fiew this file type",
Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:1)
您可以使用extern库joanzapata.pdfview
此代码将在您的布局中显示您想要的PDF格式
private PDFView pdfview;
pdfview = (PDFView) findViewById(R.id.pdfview);
File file = new File(filepath);
pdfview.fromFile(file)
.defaultPage(1)
.showMinimap(false)
.enableSwipe(true)
.onLoad(this)
.onPageChange(this)
.load();
或者如果文件在编译时已知并且您在资产文件夹中有pdf:
private PDFView pdfview;
pdfview = (PDFView) findViewById(R.id.pdfview);
pdfview.fromAsset(pdfName)
.defaultPage(1)
.showMinimap(false)
.enableSwipe(true)
.onLoad(this)
.onPageChange(this)
.load();
在你的布局中添加
<com.joanzapata.pdfview.PDFView
android:id="@+id/pdfview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>