ifconfig 在 linux 终端中有效,但在我的应用程序中无效
ifconfig works in linux terminal but it does not work in my app
我有一个 android phone。它是有根的。我正在尝试 运行 ifconfig
命令。它适用于 Linux 终端,但不适用于 Android Java 编码。
环境
Android版本:android10
状态:root
它在 Linux 终端
中有效
我在 Google App Store 下载了一个 Linux 终端。我打开了,运行ning:
$ ifconfig
它列出了我需要的信息列表。它完美运行。
在AndroidJava编码中不起作用
但是当我在 Android 应用程序中键入相同的命令时。这是行不通的。它什么也没显示。下面是我 运行:
的代码
// Executes the command.
Process process = Runtime.getRuntime().exec("/system/bin/ifconfig");
// Reads stdout.
// NOTE: You can write to stdin of the command using
// process.getOutputStream().
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
return output.toString();
我从 Run native executable code in android
复制了这些代码
问题
为什么它在 java 代码中不起作用?还有什么我错过的吗?
感谢@Erlkoenig 提到。我 运行 它有 su
g运行t 权限。
下面是我修改后的代码:
// Executes the command.
Process process = Runtime.getRuntime().exec("su");
// Writes stdin
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(process.getOutputStream()));
String command = "/system/bin/ifconfig";
writer.write(command.toCharArray());
writer.flush();
writer.close();
// Reads stdout.
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
return output.toString();
记得在将命令写入标准输入后关闭writer
。
我有一个 android phone。它是有根的。我正在尝试 运行 ifconfig
命令。它适用于 Linux 终端,但不适用于 Android Java 编码。
环境
Android版本:android10
状态:root
它在 Linux 终端
中有效我在 Google App Store 下载了一个 Linux 终端。我打开了,运行ning:
$ ifconfig
它列出了我需要的信息列表。它完美运行。
在AndroidJava编码中不起作用
但是当我在 Android 应用程序中键入相同的命令时。这是行不通的。它什么也没显示。下面是我 运行:
的代码 // Executes the command.
Process process = Runtime.getRuntime().exec("/system/bin/ifconfig");
// Reads stdout.
// NOTE: You can write to stdin of the command using
// process.getOutputStream().
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
return output.toString();
我从 Run native executable code in android
复制了这些代码问题
为什么它在 java 代码中不起作用?还有什么我错过的吗?
感谢@Erlkoenig 提到。我 运行 它有 su
g运行t 权限。
下面是我修改后的代码:
// Executes the command.
Process process = Runtime.getRuntime().exec("su");
// Writes stdin
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(process.getOutputStream()));
String command = "/system/bin/ifconfig";
writer.write(command.toCharArray());
writer.flush();
writer.close();
// Reads stdout.
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[4096];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
// Waits for the command to finish.
process.waitFor();
return output.toString();
记得在将命令写入标准输入后关闭writer
。