当前位置: 代码迷 >> Android >> Android编程,向system/etc里头写入一个新的hosts文件失败
  详细解决方案

Android编程,向system/etc里头写入一个新的hosts文件失败

热度:28   发布时间:2016-04-28 04:43:27.0
Android编程,向system/etc里面写入一个新的hosts文件失败
本帖最后由 u010517717 于 2014-07-06 14:03:30 编辑
如题
这是我的复制代码,从安装包中的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 中写入文件, 看看有没有权限;
  相关解决方案