Java 如何重新启动非根设备?
在阅读了SO和android文档的大量答案后,似乎不可能在没有root权限的情况下重新启动设备 该应用甚至没有问我是否想获得许可Java 如何重新启动非根设备?,java,android,android-permissions,Java,Android,Android Permissions,在阅读了SO和android文档的大量答案后,似乎不可能在没有root权限的情况下重新启动设备 该应用甚至没有问我是否想获得许可 // 1. Use permission in Manifest <uses-permission android:name="android.permission.REBOOT" /> // 2. Request permission in MainActivity if (ContextCompat.checkSelfPermission(this,
// 1. Use permission in Manifest
<uses-permission android:name="android.permission.REBOOT" />
// 2. Request permission in MainActivity
if (ContextCompat.checkSelfPermission(this, Manifest.permission.REBOOT) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REBOOT}, 1);
}
// 3. Restart on button click
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
pm.reboot(null);
有没有我错过的解决办法
多谢各位
B.不,在没有root权限的情况下,您无法从Android应用程序执行此操作,但您可以使用命令从终端执行此操作:“adb reboot”。但是,如果您可以根设备,则可以使用以下代码重新启动:
try {
Process process = Runtime.getRuntime().exec("adb reboot");
} catch (IOException e) {
e.printStackTrace();
}
如果这在根设备上也失败了,那么你可以通过请求根权限来尝试(在android kitkat 4.4上尝试过)
试试看{
List envList=new ArrayList();
Map envMap=System.getenv();
for(字符串envName:envMap.keySet()){
添加(envName+“=”+envMap.get(envName));
}
最终字符串[]环境=(字符串[])envList.toArray(新字符串[0]);
String命令=“重新启动”;
Runtime.getRuntime().exec(
新字符串[]{“su”,“-c”,command},
waitFor();
}捕获(IOE异常){
//捕获异常
}
没有root,您就无法重新启动设备。我唯一能想到的是DevicePolicyManager,它可以在没有根的情况下工作。
try {
Process process = Runtime.getRuntime().exec("adb reboot");
} catch (IOException e) {
e.printStackTrace();
}
try{
List<String> envList = new ArrayList<String>();
Map<String, String> envMap = System.getenv();
for (String envName : envMap.keySet()) {
envList.add(envName + "=" + envMap.get(envName));
}
final String[] environment = (String[]) envList.toArray(new String[0]);
String command= "reboot";
Runtime.getRuntime().exec(
new String[]{"su", "-c", command},
environment).waitFor();
}catch(IOException e){
//catch exception
}