首页 > 代码库 > 关于Host的修改

关于Host的修改

。。。哈哈,hello,最近总是工作效率低得很厉害哦。随便一个东西都可以让我为难很久,这不是,一个权限的问题,结果呢,自己总是不是很明白。。。。记下来咯,说不定下次会有用呢。。。、

    hosts文件!就是在系统底层的一个文件,没有任何的后缀名字。。

    然后我们这边的机顶盒总是在dns的时候,一部分呢,会出现解析不了的情况,所以呀,就像根据程序最原始的走法了,既然都会自己去读一下系统里面的hosts里面的ip地址的话,不如我们就自己写进去,这样就不用程序老去自己解析什么的咯,而且这样服务器可能也是很受不了的。。。。

   好了,麻烦开始来了,开始会简单的在配置文件里面写了权限的什么,但是基本上都是关于SD卡可读或者可写的权限,根本就没有什么多大的作用。。。

。。。然后在安装的时候,问题又来咯,结果说是要获得系统签名,就是androidshareid="com.uid.system"什么的东西,记得不是很清楚咯,可是这个就无关紧要咯,其实有了这个,在安装apk的时候,就需要跟程序一样的签名咯。。。

    。。。。。

刷机后又不行了,为什么了,原来hosts有个坏脾气,就是如果你想要用代码修改他呢,必须要是他之前被你修改过,不然就这样那原始固件里面的,真的没办法改动嘛。。。。然后。。。。针对如果就拿原始的出来改动,现在还没有找到问题,如果有angel,就请给出回答吧。

   这里其实还是有一部分代码是需要注意的:

       获得root权限:

Process process = null;DataOutputStream os = null;try { String hostPath = context.getFilesDir() + "/" + hostName;    String cmd="/system/xbin -f " + hostPath + " " + "/etc/hosts";    process = Runtime.getRuntime().exec("su"); //切换到root帐号    os = new DataOutputStream(process.getOutputStream());    os.writeBytes(cmd + "\n");    os.writeBytes("exit\n");    os.flush();    process.waitFor();} catch (Exception e) {    return false;} finally {    try {        if (os != null) {            os.close();        }        process.destroy();    } catch (Exception e) {    }}

当然会有好几种写法:

public static void modifyFile(File file) {        Process process = null;        try {            String command = "chmod -R 777 " + file.getAbsolutePath();            Runtime runtime = Runtime.getRuntime();            process = runtime.exec(command);            process.waitFor();        } catch (Exception e) {        }    }

。。。。。等等。。。。。

当然还会遇到关于权限EACCES的这个警告,但是不可小觑哦,就是它害得我现在还没捣鼓出来。。。。

     大神见着,一定要相助于我哦!-