Adobe Reader不会在Intent上打开一些有效的pdf,也不会在Android上打开内容:///

时间:2016-11-28 22:47:29

标签: android pdf android-intent uri android-fileprovider

我正在尝试为/Android/data/package.name/files/中的某些文件实现打开​​PDF阅读器的方法。我没有使用正确的FileProvider,但我发现只是添加了内容://完成了这项工作。但由于某种原因,它无法打开其中一些,我无法理解为什么。

File file=new File("Direct path to file as string");

if(file.exists()){  ///Yes, File Exists
            try {

                Intent intent = new Intent(Intent.ACTION_VIEW);
                Log.v("Authority", context.getApplicationContext().getPackageName());
                Log.v("URI", Util.UriForFile(context, file).toString());
                intent.setDataAndType(Util.UriForFile(context, file), "application/pdf");
                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                context.startActivity(intent);


            } catch (ActivityNotFoundException e) {
                parent.alert(context.getString(R.string.error_nopdfreader));
            }
}

和实际方法Util.UriForFile:

public static Uri UriForFile(Context context, File file){
    return Uri.parse("content://"+file.getAbsolutePath());
//        if(context==null)
//            Log.v("Util", "Context is null");
//
//        if(file==null)
//            Log.v("Util", "File is null");
//
//        if(context.getApplicationInfo()==null)
//            Log.v("Util", "getApplicationInfo is null");
//
 //        return FileProvider.getUriForFile(context,  context.getApplicationInfo().packageName+".provider", file);
}

1 个答案:

答案 0 :(得分:0)

好的,我"神奇地"通过返回使用FileProvider(取消注释行)并进行2次修改来解决问题:

  1. 在意图标记中添加FLAG_GRANT_READ_URI_PERMISSION
  2. 添加"未记录的"文件路径(用于访问Android /数据之外的文件):

      <root-path path="/storage/" name="root_test" />