应用程序在data/data/package.name/file.txt
中生成一个文件。有没有办法让我从另一个应用程序(使用不同的包)打开该文件?
我尝试以标准方式(FileInputStream
)阅读文件,但我得到了EACCES error (no permission)
。
我可以将文件(不用打开它)复制到根目录然后打开它吗?
编辑:如果没有root访问权限更改文件的权限怎么办?
答案 0 :(得分:1)
默认情况下,每个Android应用程序都只能访问属于自己的程序包的文件。这意味着您的应用程序只能使用package.name读取包下面的文件。如果您尝试读取其他文件,则会收到访问被拒绝异常。这是Android的安全模型。
一个例外是当另一个应用程序使用MODE_WORLD_READABLE或MODE_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);
}
此外,其他应用程序必须使用适当的权限将其数据设置为可读。