如何在特定查看器中从内部存储打开文件? [复制]
Posted
技术标签:
【中文标题】如何在特定查看器中从内部存储打开文件? [复制]【英文标题】:How to open file from internal storage in specific viewer? [duplicate] 【发布时间】:2018-07-10 11:01:03 【问题描述】:我想打开InternalStorage
中的文件
我在 data/data/mypackage/files 路径下创建了 Documents 目录。
现在我想在 PDF 查看器或文本查看器等外部应用程序中打开文件。
我已经检查过,文件存在,但是当我在特定查看器(如 PDF 查看器)中打开文件时,
它显示 Toast-“无法显示 PDF”。
我正在使用以下代码在特定查看器中打开文件。
File file=new File(context.getFilesDir()+"/Documents/"+fileInfo.getFilename()+"."+fileInfo.getFiletype());
if (file.exists())
Uri uri = Uri.parse("file://"+file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
context.startActivity(intent);
选择器将为选定的 PDF 查看器打开。
如何从内部存储打开 PDF 或文本文件 (data/data/com..somepackagename/files)?
【问题讨论】:
试试这个intent.setDataAndType(uri, "/"); 使用FileProvider
。正如一个答案指出的那样,其他应用程序无法访问您的应用程序的getFilesDir()
。另外,Uri.fromFile()
将无法在 android 7.0+ 设备上运行,因为以这种方式构建的 Uri
值被禁止在 Intents
中使用。
【参考方案1】:
第三方应用程序无法访问您的包文件夹,如果您想打开该文件第三方应用程序,将该文件移动到共享文件夹中
【讨论】:
以上是关于如何在特定查看器中从内部存储打开文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章