Runtime.getRuntime().exec("su") apk卡死
时间: 2023-12-15 12:18:18 浏览: 46
这是因为你的应用程序尝试以超级用户权限(root)执行命令,但是在大多数设备上,应用程序没有超级用户权限,因此会导致应用程序卡死。
如果你需要执行需要超级用户权限的命令,你需要在设备上root你的手机或平板电脑。但是,注意到设备root后会带来一些安全风险,因此应该谨慎操作。
如果你想在应用程序中执行类似的操作,你可以考虑使用Android中的RootTools库,它提供了一些便利的方法来执行需要超级用户权限的命令。但是同样需要注意安全风险。
相关问题
android8 Runtime.getRuntime().exec su
在Android 8中,您可以使用以下代码来使用su命令:
```
try {
Process process = Runtime.getRuntime().exec("su");
process.waitFor();
} (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) e.printStackTrace();
}
```
这段代码使用`Runtime.getRuntime().exec("su")`来执行su命令,然后使用`process.waitFor()`等待命令执行完成。这样您就可以在Android 8中使用su命令了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Android Runtime.getRuntime().exec(...),参数带有空格的解决方法](https://blog.csdn.net/qq_38270065/article/details/127071585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Android Runtime.getRuntime().exec()](https://blog.csdn.net/xianrenli38/article/details/117484708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
Runtime.getRuntime.exec讲解
`Runtime.getRuntime().exec()`是Java中用于执行外部进程的方法。它返回一个Process对象,可以使用这个对象控制和监视进程的执行。
语法如下:
```java
public Process exec(String command) throws IOException
```
其中,command是要执行的命令。
例如,执行一个简单的命令:
```java
Process process = Runtime.getRuntime().exec("ls");
```
这个代码将在当前目录下执行`ls`命令,并返回一个Process对象。
然而,这只是一个简单的例子。实际上,在执行外部进程时,还需要考虑很多其他方面,例如进程的输入、输出、错误处理等。
下面是一个更复杂的例子,演示如何使用`Runtime.getRuntime().exec()`执行一个Python脚本,并读取它的输出:
```java
try {
Process process = Runtime.getRuntime().exec("python myscript.py");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
```
在这个例子中,我们使用`BufferedReader`读取进程的输出,并将其打印到控制台上。如果进程执行时发生错误,我们可以使用`process.getErrorStream()`方法获取错误流,并对其进行处理。
需要注意的是,`Runtime.getRuntime().exec()`方法在执行外部进程时可能会阻塞当前线程,因此在处理输出时需要开启一个新的线程。此外,还需要注意处理输入、输出、错误流的顺序,以避免死锁等问题。
总之,`Runtime.getRuntime().exec()`是一个非常强大的方法,可以在Java中轻松地执行外部命令和脚本。但是,它需要仔细处理各种输入、输出、错误流,以确保进程能够正确执行。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)