当前位置:操作系统 > 安卓/Android >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,