在Android活动中预览文件(PDF,图像,docx)时发出问题

时间:2018-05-24 06:07:48

标签: android

我很难在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卡中的文件?请帮忙。

1 个答案:

答案 0 :(得分:0)

您是否尝试过以下问题的所有答案?

dpdgraph

以下代码应该可以正常工作。

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);
   }