android 在root下修改hosts文件失败

天王盖地虎626 发布于 2017/07/01 14:16
阅读 221
收藏 0

下面的代码是修改hosts文件的代码,从调用方法writeFile来看,总是失败,报错位置在标红的地方

异常信息是

/system/etc/hosts: open failed: EROFS (Read-only file system)

从错误信息上看是这个文件没有可写的权限啊?请问如何让android系统文件变成可写呢?


    private void shell(String s) throws IOException {
        Process proc = Runtime.getRuntime().exec("su");
        proc.getOutputStream().write(s.getBytes());
        proc.getOutputStream().flush();
        proc.getOutputStream().close();
    }
    

private void writeFile(String str) {
                
        File file = new File("/system/etc/hosts");    
        FileOutputStream fo = null;
        if (file.isFile()) {
            if (!file.canRead()) {
                try {                
                    shell(" chmod 777 /system/etc/hosts "); // 修改文件读写权限
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (!file.canWrite()) {
                try {                                
                    shell(" chmod 777 /system/etc/hosts ");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }            
            try {                
                fo = new FileOutputStream(file);
                fo.write(str.getBytes());

            
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
        
                e.printStackTrace();
            } finally {
                try {
                    if (null != fo) {
                        fo.flush();
                        fo.close();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                
                    e.printStackTrace();
                }                            

            }

        }

    }

加载中
返回顶部
顶部