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