0
点赞
收藏
分享

微信扫一扫

Android 定时重启工具类

本章分享Android设备定时重启设备的功能,相信很多对硬件开发的小伙伴会有帮助

import android.util.Log;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SetUpIpUtils {
    private static SetUpIpUtils setUpIpUtils;
    private SetUpIpUtils() {
    }
    /**
    * 获取SetUpIpUtils实例 ,单例模式
    */
    public static SetUpIpUtils getInstance() {
        if (setUpIpUtils == null) {
            setUpIpUtils = new SetUpIpUtils();
        }
        return setUpIpUtils;
    }
    /**
    * 重启机器
    */
    public void restartSystem() {
//        ShellUtils.execCommand("reboot",false);
        new Thread() {
            @Override
            public void run() {
                super.run();
                Process localProcess = null;
                try {
                    localProcess = Runtime.getRuntime().exec("su");
                    DataOutputStream localDataOutputStream = new DataOutputStream(
                            localProcess.getOutputStream());
// localDataOutputStream.writeBytes("chmod 755 "+ "reboot" + "\n");
                    localDataOutputStream.writeBytes("reboot\n");
// localDataOutputStream.writeBytes("poweroff");
                    localDataOutputStream.flush();
                    localDataOutputStream.close();
//                    localProcess.waitFor();
                    sleep(1000);//停一下
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (localProcess != null) {
                        localProcess.destroy();
                    }
                }
            }
        }.start();
    }
    /**
    * 挂载目录为可读写
    * 注:sdcard路径要写/mnt/sdcard
    */
    public void remountDirectory(String path) {
        if (!path.startsWith("/")) {
            path = "/" + path;
        }
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("su");
            DataOutputStream localDataOutputStream = new DataOutputStream(
                    localProcess.getOutputStream());
            localDataOutputStream.writeBytes("mount -o remount rw " + path);
            localDataOutputStream.flush();
            localDataOutputStream.close();
            localProcess.waitFor();
// System.out.println("挂载目录:"+path);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
    }
    /**
    * 获取本机ip
    */
    public String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface
                    .getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf
                        .getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()
                            && InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) {
                        return inetAddress.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException e) {
            Log.i("SetUpIpUtils", "获取本机ip出错!");
            e.printStackTrace();
        }
        return "";
    }
    /**
    * 获取dns
    */
    public String getDns() {
        String localDns = "";
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("getprop net.dns1");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            localDns = bufferedReader.readLine();
            // System.out.println("localDns :"+ localDns);
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return localDns;
    }
    /**
    * 获取网关
    */
    public String getGateway() {
        String gateway = "";
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("ip route");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            String getewayReaderLine = bufferedReader.readLine();
            LogUtils.i("getewayReaderLine :" + getewayReaderLine);
            gateway = getewayReaderLine.substring(12,
                    getewayReaderLine.indexOf("dev") - 1);
            LogUtils.i("gateway :" + gateway);
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return gateway;
    }
    /**
    * 获取mac地址,ip,子网掩码,,返回数组
    */
    public String[] getIpMac() {
        String[] str = new String[3];
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("busybox ifconfig");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            String line = "";
            line = bufferedReader.readLine();
            // mac
            str[0] = line.substring(line.indexOf("HWaddr") + 7,
                    line.length() - 2);
            // System.out.println("str[0] :"+str[0]);
            // System.out.println("line :"+line);
            line = bufferedReader.readLine();
            // ip
// System.out.println("line :"+line);
            str[1] = line.trim().substring(10, line.trim().indexOf("Bcast") - 2);
// System.out.println("str[1] :"+str[1]);
            // 子网掩码
            str[2] = line.substring(line.indexOf("Mask") + 5, line.length());
            // System.out.println("line :"+line);
            // System.out.println("str[1] :"+str[1]+'\n'+"str[2] :"+str[2]);
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return str;
    }
    /**
    * 获取子网掩码
    */
    public String getMask() {
        String mask = "";
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("busybox ifconfig");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            String line = "";
            line = bufferedReader.readLine();
            line = bufferedReader.readLine();
            // 子网掩码
            mask = line.substring(line.indexOf("Mask") + 5, line.length());
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return mask;
    }
    /**
    * 获取ip
    */
    public String getIp() {
//        ShellUtils.CommandResult commandResult = ShellUtils.execCommand("busybox ifconfig", true);
//        String result = commandResult.successMsg;
//        System.out.println("555555555555555555555555555555555555result:" + result);
        String ip = "";
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("busybox ifconfig");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            String line = "";
            line = bufferedReader.readLine();
            line = bufferedReader.readLine();
            ip = line.trim().substring(10, line.trim().indexOf("Bcast") - 2);
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return ip;
    }
    /**
    * 修改ip,dns,网关等设置
    */
    public void editEthernet(String ip, String dns, String gateway, String mask) {
        Process process = null;
        try {
            // root权限
            process = Runtime.getRuntime().exec("su");
            DataOutputStream dataOutputStream = new DataOutputStream(
                    process.getOutputStream());
            // 修改ip和子网掩码
            if (ip != null) {
                try {
                    dataOutputStream.writeBytes("ifconfig eth0 " + ip + " netmask "
                            + mask + "\n");
                    dataOutputStream.flush();
                } catch (Exception e) {
                    Log.i("SetUpIpUtils", "设置ip和子网掩码出错!");
                    e.printStackTrace();
                }
            }
            // 修改dns
            if (dns != null) {
                try {
                    dataOutputStream.writeBytes("setprop net.dns1 " + dns + "\n");
                    dataOutputStream.flush();
                } catch (Exception e) {
                    Log.i("SetUpIpUtils", "设置dns出错!");
                    e.printStackTrace();
                }
            }
            // 修改网关
            if (gateway != null) {
                try {
                    dataOutputStream.writeBytes("route add default gw " + gateway
                            + " dev eth0" + "\n");
                    dataOutputStream.flush();
                } catch (Exception e) {
                    Log.i("SetUpIpUtils", "设置网关出错!");
                    e.printStackTrace();
                }
            }
            dataOutputStream.writeBytes("exit\n");
            dataOutputStream.flush();
            dataOutputStream.close();
            process.waitFor();// 必须加
        } catch (Exception e) {
            Log.i("SetUpIpUtils", "网络设置出错");
            e.printStackTrace();
        } finally {
            if (process != null) {
                process.destroy();
            }
        }
    }
    /**
    * 设置ip获取方式为动态获取
    */
    public void setDynamicAcquisitionIP() {
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("su");
            DataOutputStream localDataOutputStream = new DataOutputStream(
                    localProcess.getOutputStream());
            localDataOutputStream.writeBytes("netcfg eth0 up dhcp");
            localDataOutputStream.flush();
            localDataOutputStream.close();
            localProcess.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
    }
    /**
    * 获取应用是否在运行
    */
    public boolean isRunning(String packageName) {
        boolean isRun = false;
        Process localProcess = null;
        try {
            localProcess = Runtime.getRuntime().exec("ps grep " + packageName + "\n");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(localProcess.getInputStream()));
            String line = "";
            while ((line = bufferedReader.readLine()) != null) {
                LogUtils.i("isrunning :" + line.substring(line.indexOf("S") + 2, line.length()));
                if (line.substring(line.indexOf("S") + 2, line.length()).trim().equals(packageName)) {
                    isRun = true;
                    break;
                }
            }
            bufferedReader.close();
            localProcess.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (localProcess != null) {
                localProcess.destroy();
            }
        }
        return isRun;
    }
    /**
    * 判断是否是一个合法的ip地址
    *
    * @param addr
    * @return
    */
    public boolean isIP(String addr) {
        if (addr == null || addr.length() < 7 || addr.length() > 15 || "null".equals(addr)) {
            return false;
        }
        //判断IP格式和范围
        String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
        Pattern pat = Pattern.compile(rexp);
        Matcher mat = pat.matcher(addr);
        boolean ipAddress = mat.find();
        return ipAddress;
    }
}

public class InetAddressUtils {
    InetAddressUtils() {
        throw new RuntimeException("Stub!");
    }
    public static boolean isIPv4Address(String input) {
        throw new RuntimeException("Stub!");
    }
    public static boolean isIPv6StdAddress(String input) {
        throw new RuntimeException("Stub!");
    }
    public static boolean isIPv6HexCompressedAddress(String input) {
        throw new RuntimeException("Stub!");
    }
    public static boolean isIPv6Address(String input) {
        throw new RuntimeException("Stub!");
    }
}

最后在你需要重启的地方引用 SetUpIpUtils.getInstance().restartSystem();就可以了


举报

相关推荐

0 条评论