我目前需要从我的java代码发出系统命令,但是我坚持了很长时间。我一直在尝试许多论坛和许多代码片段,但都要么崩溃应用程序或似乎什么都不做 我试过的最后一个代码与#34; echo" 但当我制作" echo anystuff> y.txt"而不是创建一个名为y.txt的文件并写下#34; anystuff"在文件中,它只显示" anystuff> y.txt"在我创建的文本框中查看输出 这是我的方法
public void ShellTest() throws IOException {
// test 10
String cmd="echo anystuff > y.txt";
StringBuffer cmdOut = new StringBuffer();
Process process;
try{
// issue the command here
process = Runtime.getRuntime().exec(cmd);
// prepare to get back the result and put it in the textbox "resText"
DataOutputStream stdin = new DataOutputStream(process.getOutputStream());
stdin.writeBytes(cmd);
InputStreamReader r = new InputStreamReader(process.getInputStream());
BufferedReader bufReader = new BufferedReader(r);
char[] buf = new char[4096];
int nRead = 0;
while ((nRead = bufReader.read(buf)) > 0){
cmdOut.append(buf,0,nRead);
}
bufReader.close();
try {
process.waitFor();
} catch (InterruptedException e){
e.printStackTrace();
}
} catch (IOException e){
e.printStackTrace();
}
// check by the showing the output of the command in the textbox
resText.setText(cmdOut);
}
BTW我的手机是Google Pixel 2 XL
任何帮助将不胜感激!
答案 0 :(得分:1)
因为重定向不是系统命令的一部分。它是(通常是bash)shell的一个特征。要使其工作,您需要运行shell然后将命令作为shell的输入提供。单独将它作为命令运行将把它全部解释为命令echo的参数。
答案 1 :(得分:0)
引入SuperUser和SuperSU的公司Chainfire制作了一个很棒的库来处理所有这些东西。安装库它就可以了!
布局文件
Iterate Methods
Java文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
tools:context=".MainActivity" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textAlignment="center"
android:text="Shell Executer" />
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/input_text"
android:hint="Example - ls" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/execute_button"
android:text="Execute" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/clear_button"
android:text="Clear" />
<TextView
android:id="@+id/output_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:textAlignment="textStart" />
</LinearLayout >
结果: Image result
图书馆链接&amp;使用方法:https://github.com/jrummyapps/android-shell