【问题标题】:How can I open a PDF file using Intent in Android Nougat?如何在 Android Nougat 中使用 Intent 打开 PDF 文件?
【发布时间】:2017-10-21 04:16:21
【问题描述】:

感谢您的帮助,以便我的代码可以打开带有 Intent 的 PDF 文件,这是我一直在使用的代码:

String pathFile =
    Environment.getExternalStorageDirectory().toString() +
    FileUtils.PATH_SEPARATOR + "myFolder" +
    FileUtils.PATH_SEPARATOR + "myFile.pdf";
File pdfFile = new File( pathFile );
if ( pdfFile.exists() ) {
    Uri uri = Uri.fromFile( new File( pathFile ) );
    Intent intent = new Intent( Intent.ACTION_VIEW );
    intent.setDataAndType(uri, "application/pdf");
    intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
    startActivity( intent );
}

但我知道现在(从 Android-N 版本开始)特权的处理方式有所不同,所以我希望您能帮助我,指出我必须进行哪些更改才能使用 Intent 打开 PDF 文件。

PS:在我的 AndroidManifest.xml 中,我正在寻找 STORAGE 中的所有权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

【问题讨论】:

  • 您是否授予了读取外部存储的权限?
  • 我的 AndroidManifest.xml 上有关于 STORAGE 的权限请求
  • 您是否声明了运行时权限,因为从 nogout 开始我们需要声明运行时权限。

标签: android pdf android-intent android-developer-api


【解决方案1】:

【讨论】:

    【解决方案2】:

    试试这个代码。

    Intent intent = new Intent(Intent.ACTION_VIEW);
    try {
        String newFilePath = filePath.replaceAll("%20", " ");
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            intent.setDataAndType(Uri.parse(newFilePath), "application/pdf");
        } else {
            Uri uri = Uri.parse(newFilePath);
            File file = new File(uri.getPath());
            if (file.exists()){
                uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
                intent.setDataAndType(uri, "application/pdf");
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            }
        }
    
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
       startActivity(intent);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2015-07-14
      • 1970-01-01
      相关资源
      最近更新 更多