Я пытаюсь выполнить команды adb программно
Вот мой код:
File f = new File(Environment.getExternalStorageDirectory(), "screen" + System.currentTimeMillis() + ".png");
new ExecuteCommand(MainActivity.this).execute("adb shell screencap -p "
+ Environment.getExternalStorageDirectory().getPath() +
"/" + "screen" + System.currentTimeMillis() + ".png");
Класс ExecuteCommand:
public class ExecuteCommand extends AsyncTask<String, String, String> {
Context mContext=null;
public ExecuteCommand(Context _ctx)
{
mContext =_ctx;
}
ProgressDialog progressdailog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressdailog = ProgressDialog.show(mContext,
"Executing", "Please Wait");
}
@Override
protected String doInBackground(String... params) {
Process p;
StringBuffer output = new StringBuffer();
try {
p = Runtime.getRuntime().exec(params[0]);
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
p.waitFor();
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
String response = output.toString();
return response;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
progressdailog.dismiss();
Log.e("Output", result);
}
}
Проблема в журналах:
07-31 15: 26: 31.832 18716-18716/com.example E/Output: невозможно связать 'tcp: 5038' * daemon не работает. начиная с порта 5038 *
Я не могу сделать снимок экрана, но если я запустил ту же команду в командной строке, это работает нормально.
Но если я выполняю
new ExecuteCommand(MainActivity.this).execute("ls");
это отлично работает. Где проблема в команде?