本章分享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();就可以了