大家好, 我想在android的java层 设置一个悬浮按钮, 当用户按下时, 会把执行安卓的返回键,
我知道在adb shell后的终端可以用input keyevent 4这样的命令来操作.
我想想把他放到java层来做, 于是我这样:
private void doBackKey(){
/* try ///第一种方案.
{
Process localProcess = Runtime.getRuntime().exec("su");
DataOutputStream localDataOutputStream = new DataOutputStream(localProcess.getOutputStream());
localDataOutputStream.writeBytes("input keyevent 4\n");
localDataOutputStream.flush();
localDataOutputStream.close();
localProcess.waitFor();
/// String str = new DataInputStream(localProcess.getErrorStream()).readLine();
localProcess.destroy();
}
catch (Exception localException)
{
Log.i("snoeeee",localException.getMessage().toString());
Toast.makeText(MainActivity.this,localException.getMessage().toString(), Toast.LENGTH_LONG).show();
}
*/
Process pro; ////这个是第二种方案
try {
pro = Runtime.getRuntime().exec("input keyevent 4\n");
try {
pro.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
经过这两种方案, 我发现都无法执行, 提示说: write failed: EPIPE (Broken pipe) 请问下为什么
我的安卓系统已经ROOT, 一切都完全可以操作, 谢谢.
------解决方案--------------------
权限问题,在AndroidManifest.xml添加“ android:sharedUserId="android.uid.system"”