读取其他应用程序制作的文件

时间:2014-06-14 18:05:01

标签: android file file-io

应用程序在data/data/package.name/file.txt中生成一个文件。有没有办法让我从另一个应用程序(使用不同的包)打开该文件? 我尝试以标准方式(FileInputStream)阅读文件,但我得到了EACCES error (no permission)。 我可以将文件(不用打开它)复制到根目录然后打开它吗?

编辑:如果没有root访问权限更改文件的权限怎么办?

2 个答案:

答案 0 :(得分:1)

默认情况下,每个Android应用程序都只能访问属于自己的程序包的文件。这意味着您的应用程序只能使用package.name读取包下面的文件。如果您尝试读取其他文件,则会收到访问被拒绝异常。这是Android的安全模型。

一个例外是当另一个应用程序使用MODE_WORLD_READABLEMODE_WORLD_WRITABLE标志存储其文件时,则每个其他应用程序将能够访问(读取或读取和写入)它们。此选项在API级别17及更高版本中已弃用。

答案 1 :(得分:0)

您的代码可能正确,您只需在文件名前添加额外的/(或File.separator),如下所示:

//Set desired file path. For example:-

File newxmlfile = new File(Environment.getExternalStorageDirectory() + "/new.xml");

try {
  //Read file
} catch (Exception e) {
    Log.e("IOException", "exception while reading file",
            e);
}

此外,其他应用程序必须使用适当的权限将其数据设置为可读。