在android开发,关于文件的拜访权限中阐明我感觉不是很清楚,用了一个小比如来阐明android创立文件,用别的一个运用去拜访创立的文件。
在android文件创立的形式中运用MODE_PRIVATE创立文件,API中的解说如下:
File creation mode: the default mode, wherethe created file can only be accessed by the calling application (or allapplications sharing the same user ID)。
关于我的了解,关于一个运用以MODE_PRIVATE形式创立的文件只能被调用的运用(或是同享相同的用户ID的运用)拜访。
context.MODE_PRIVATE:是默许的操作形式,它代表这个文件是私有的,只能被运用自身拜访。(网上这样解说的)
save办法是经过filename,content来保存文件。
public void save(String filename, String content) throws Exception{
out = context.openFileOutput(filename, Context.MODE_PRIVATE);
out.write(content.getBytes());
out.close();
}
依照context.MODE_PRIVATE的解说该filename的文件只能由该运用自身拜访。我测验别的写了一个运用来对其该运用创立的文件进行拜访,创立的文件为123.txt,其特点如下:
//testAccessOtherAppFile()办法对123.txt进行拜访;坐落另一项目中
public class FileotherActivityTest extends AndroidTestCase {
private static final String TAG = FileotherActivityTest;
public void testAccessOtherAppFile() throws Exception{
String path =/data/data/com.android/files/123.txt;
File file = new File(path);
FileInputStream in =new FileInputStream(file);
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream out = new ByteArrayOutputStream();
while(-1 != (len = in.read(buffer))){
out.write(buffer, 0, len);
}
//得到文件的二进制数据
byte[] data = out.toByteArray();
out.close();
in.close();
Log.i(TAG, new String(data));
}
}
testAccessOtherAppFile办法运用不能拜访到123.txt,但是在运转这个androidjunit testcase的时分logcat正常输出了文件内容:
简略的剖析了下原因,在这两个运用中是不是阐明API中的all applications sharing the same user ID,private形式创立的文件能够由创立该文件的运用拜访以及与运用user ID的一切运用所拜访,这儿的user ID,我了解的是:物理机器的环境或是同一模拟器。所以,正常拜访到另一运用创立的文件。
两个项目的目录结构: