我用C ++创建了一个Hello程序,并针对Android对其进行了交叉编译。
程序打印HelloWorld1
,然后打印当前目录,然后创建一个包含当前日期和时间的date.txt文件,最后打印HelloWorld2
我创建了一个执行shell命令的Android应用程序。 我使用adb将HelloWorld程序推送到了应用程序的文件夹中:
adb push Hello /data/local/tmp
adb shell
>run-as mytestapp.test
>cp /data/local/tmp/Hello .
我从adb运行了程序,并获得了预期的输出:
HelloWorld1
/data/data/mytestapp.test
HelloWorld2
,并创建一个包含日期/时间的date.txt文件。
问题是,当我使用Android应用程序运行该程序时,会得到以下结果:
HelloWorld1
HelloWorld2
所以我没有得到当前目录的路径。我也没有得到date.txt文件
我从应用程序运行的命令是/data/data/mytestapp.test/Hello
这是应用程序的代码:
public class MainActivity extends Activity {
EditText input;
Button btn;
TextView out;
String command;
Process p;
StringBuffer output;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = (EditText)findViewById(R.id.txt);
btn = (Button)findViewById(R.id.btn);
out = (TextView)findViewById(R.id.out);
output = new StringBuffer();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
command = input.getText().toString();
try{
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "n");
}
} catch (Exception e) {
e.printStackTrace();
}
out.setText(output.toString());
Log.d("Output", output.toString());
}
});
}
}
您是否知道为什么它通过adb(作为应用程序运行)而不通过应用程序本身工作?
PS:我的设备没有植根