diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index bc160925..b5726efb 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -1829,29 +1829,45 @@ public class MicroPhotoService extends Service { public void setStaticNetwork(String iface, String ip, String gateway, String ipPrefix, int ipPrefixLength) { int exitValue = -1; boolean success = false; + + try { File ethShellFile = new File(getFilesDir(), "eth.sh"); if (ethShellFile.exists()) { - Process process = Runtime.getRuntime().exec("/system/xbin/su"); - DataOutputStream os = new DataOutputStream(process.getOutputStream()); - os.writeBytes("/system/bin/sh " + ethShellFile.getAbsolutePath() + "\n"); - os.writeBytes("exit\n"); // 重要:退出su shell + Process process = null; + DataOutputStream os = null; + BufferedReader inputReader = null; - os.flush(); - exitValue = process.waitFor(); + try { + process = Runtime.getRuntime().exec("/system/xbin/su"); + os = new DataOutputStream(process.getOutputStream()); + os.writeBytes("/system/bin/sh " + ethShellFile.getAbsolutePath() + "\n"); + os.writeBytes("exit\n"); // 重要:退出su shell + + os.flush(); + exitValue = process.waitFor(); + + inputReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); + String line = null; + StringBuilder error = new StringBuilder(); + while ((line = inputReader.readLine()) != null) { + error.append(line); + error.append("\n"); + } - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream())); - String line = null; - StringBuilder error = new StringBuilder(); - while ((line = reader.readLine()) != null) { - error.append(line); - error.append("\n"); - } + if (exitValue == 0) { + infoLog("Add route successfully Code=" + exitValue); + } else { + infoLog(error.toString()); + } + } catch (Exception ex) { - if (exitValue == 0) { - infoLog("Add route successfully Code=" + exitValue); - } else { - infoLog(error.toString()); + } finally { + FilesUtils.closeFriendly(os); + FilesUtils.closeFriendly(inputReader); + if (process != null) { + process.destroy(); + } } } else { Process process = Runtime.getRuntime().exec("/system/xbin/su root");