当前位置: 代码迷 >> Android >> android在java层执行input keyevent 四 命令失败?
  详细解决方案

android在java层执行input keyevent 四 命令失败?

热度:153   发布时间:2016-04-28 05:21:26.0
android在java层执行input keyevent 4 命令失败?????
大家好, 我想在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"”
  相关解决方案