android - 使用 getevent 在 rooted android 手机上拒绝权限

标签 android

我有非常简单的代码如下:

@Override
public void onClick(View v) 
{
  Log.i("MyApp", "Started");
  try
  {
    Process processStart = Runtime.getRuntime().exec("su");
  } 
  catch (IOException e1)
  {
    e1.printStackTrace();
  }
  String myStringArray[]= {"getevent","/dev/input/event0"};
  String line;
  try 
  {
    Process process = Runtime.getRuntime().exec(myStringArray);
    InputStreamReader inputstreamreader = new InputStreamReader(process.getInputStream());
    BufferedReader bufferedReader = new BufferedReader(inputstreamreader);
    bufferedReader.read();
    while ((line = bufferedReader.readLine()) != null) 
    {
      Log.i("MyApp", line);
    }
    InputStreamReader errstreamreader = new InputStreamReader(process.getErrorStream());
    BufferedReader errReader = new BufferedReader(errstreamreader);
    errReader.read();
    while ((line = errReader.readLine()) != null) 
    {
      Log.i("MyApp", line);
    }
  } catch(java.io.IOException e){
  }
  Log.i("MyApp", "Finished");
}
});

但是我得到这个错误:

could not open /dev/input/event0, permission denied

我被要求在手机上授予 root 权限,但在此之前它在 logcat 上有错误。

我也尝试过 processStart.waitFor();

但是它把应用程序卡在那里,根本没有前进。我试过到处寻找原因,但无法让它发挥作用。

我也尝试过使用 ProcessBuilder,但是当我使用它时,getevent 根本不返回任何内容......

最佳答案

我认为您误解了“su”的用法。

Process processStart = Runtime.getRuntime().exec("su");

上面的代码将创建一个新进程并执行'su'命令,这只会使子进程成为'root'。

你的调用过程仍然是一个正常的过程,所以你不能做'getevent'。相反,您应该在“有根子进程”中运行此 super 命令,例如:

mProcess = new ProcessBuilder()
                        .command("/system/xbin/su")
                        .redirectErrorStream(true).start();

OutputStream out = mProcess.getOutputStream();

String cmd = "getevent /dev/input/event0 \n";
Log.d(TAG, "Native command = " + cmd);
out.write(cmd.getBytes());

关于android - 使用 getevent 在 rooted android 手机上拒绝权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570962/

相关文章:

android - versionName 是否必须增加?

android - 与我的应用程序图标共享 Android 文本

android - 是否可以在我们的 Activity 中查看 Log.i 的 logcat 结果?

java - 由于 "Versions that do not match",android 应用程序无法构建

android - 使用事件总线解耦 Android 应用程序

Android getlastknownlocation 返回 null

java - 如何在android中获取拨出电话号码?

android - 在导入路径中找不到模块错误

android - Android 手机标配 Google map ?

java - 如何解决 Android 4.4.2 中的 AVD 自动旋转屏幕问题?