我很难在Android中预览存在于SD卡/内存中的PDF文档,因为它没有自己的API。我试过以下:
Intent showIntent = new Intent(Intent.ACTION_VIEW);
showIntent.setDataAndType(uri, "application/pdf");
showIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(showIntent);
但它不起作用。
我也尝试使用Webview进行检查,但仍然没有结果。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
String file = getIntent().getStringExtra("previewfile");
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://docs.google.com/gview?embedded=true&url="+file);}
我已经看到一些库可以在文件存在于Asset文件夹中时使用,但唯一的问题是我无法以编程方式将文件放在资源文件夹中。
有没有办法预览存储在SD卡中的文件?请帮忙。
答案 0 :(得分:0)
您是否尝试过以下问题的所有答案?
以下代码应该可以正常工作。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
File file=new File(mFilePath);
Uri uri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);
intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
} else {
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(mFilePath), "application/pdf");
intent = Intent.createChooser(intent, "Open File");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}