如题
这是我的复制代码,从安装包中的raw文件夹里释放一个文件到system/etc中,代码如下,但是把路径改成sdcard就可以,是不是没有打开system的读写还是少了什么权限?谢谢。
设备已经root。
已经声明了
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
权限。
try {
String DATABASE_FILENAME = "hosts";
String DATABASE_PATH ="/system/etc";
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists())
{
InputStream is = getResources().openRawResource(R.raw.jttqbcwzdaxy);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
------解决方案--------------------
应该是没有权限, 你的手机有root吗
你只接在应用中这么干是不行的, 这个应用有一个对应的单独用户, 只能操作 /data/data/应用安装包 下的文见和 sd卡问家, 其它文件没有权限,
用命令行的形式吧, 用 Process 类执行命令方法. 手机有root的话, 先执行 su 命令, 然后执行 cp 命令.
进入 adb shell 查看一下 你在命令行下 向 /system 中写入文件, 看看有没有权限;