关于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 + "
");
    os.writeBytes("exit
");
    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的这个警告,但是不可小觑哦,就是它害得我现在还没捣鼓出来。。。。

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

一切只是为了充实自己!!stay hungry and stay foolish!!
原文地址:https://www.cnblogs.com/Catherine-Brain/p/3849981.html