Android学习笔记--- 文件的操作模式.各个应用之间的文件权限
13_文件的操作模式---------------------------------------
1.注意在应用相同的情况下,不同的项目一定不要用相同的包名这样的话,会被视为是一个应
用
----------------------------------
2.a.Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访
问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文
件可以使用Context.MODE_APPEND
b.Context.MODE_PRIVATE:只可以被本应用访问,不可以被其他应用访问
---------------------------------
3. Unable to find instrumentation target package的问题
本例为以下DemoDao类进行单元测试
----------------新建DemoDao.java--------------
package com.neter.test.dao;
import android.util.Log;
public class DemoDao{
public void save(){
Log.i("DemoDao", "用来测试的方法");
}
}
----------------新建DemoDaoTest.java--------------
package com.neter.test.dao;
import android.test.AndroidTestCase;
import android.util.Log;
public class DemoDaoTest extends AndroidTestCase {
public void testSave() {
new DemoDao().save();
Log.i("DemoDaoTest", "测试");
}
}
-------------------------------AndroidManifest.xml--------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.neter.test.dao"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="android.test.runner"/>
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.neter.test.dao"
android:label="Testing"></instrumentation>
</manifest>
上面配置文件中
MainActivity为android程序入口,请自已新建代码略
<uses-library android:name="android.test.runner"/>不可修改
android:name="android.test.InstrumentationTestRunner不可修改
android:label="Testing"可不写
如出现Test run failed:Unable to find instrumentation target package
是因为 android:targetPackage="com.neter.test.dao" 必须和
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.neter.test.dao"
package相同的包名
-------------------------------------------------------------------
3.新建一个项目来测试,在
FileOutputStream outStream=context.openFileOutput(filename,Context.MODE_PRIVATE);
模式下,其他应用不可以访问用这个模式创建的文件
-------------------------------------------------------
a.创建Android项目OherFile
b./OherFile/src/com/credream/otherfile/OherFileActivity.java 这个文件自动生成
c./OherFile/src/com/credream/othertest/AccessOtherPrivateTest.java
package com.credream.othertest;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import android.test.AndroidTestCase;
import android.util.Log;
public class AccessOtherPrivateTest extends AndroidTestCase
{private static final String TAG="AccessOtherPrivateTest";
public void testAccessPrivate() throws Throwable{
String path="/data/data/com.credream.file/files/lidewei.txt";
File file=new File(path);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
FileInputStream inputStream=new FileInputStream(file);
byte[] buffer=new byte[1024];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
outputStream.write(buffer,0,len);
}
byte[] data=outputStream.toByteArray();
outputStream.close();
inputStream.close();
String content=new String(data);
Log.i(TAG, content);
}
}
-------------------------------------------------------
d./OherFile/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.credream.otherfile"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".OherFileActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.credream.otherfile" android:label="Tests for My App"
/>
</manifest>
--------------------------------------------------------
e.在AccessOtherPrivateTest.java选择那个方法
补充:移动开发 , Android ,