使用 getevent 在已 root 的 Android 手机上拒绝权限

2024-01-30

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

@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”。相反,您应该在“有根子进程”中运行此超级命令,例如:

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());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 getevent 在已 root 的 Android 手机上拒绝权限 的相关文章

  • Android Studio 3.0.0 不允许 DOCTYPE

    升级到Android Studio 3 0 0 同步并更新gradle插件 出现以下错误 Error DOCTYPE not allowed if function http apache org xml features disallow
  • Android 上有哪些字体可用? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道安卓有一个字体集合 http www ascenderfonts com store search
  • v7 RecyclerView NullPointerException AccessibilityDelegateCompat.getBridge()

    运行我的 recyclerview 列表片段时出现此错误 java lang NullPointerException Attempt to invoke virtual method java lang Object android su
  • 强制用户在 Android 中的 EditText 中输入内容

    我的活动中有几个编辑文本 我希望我的用户在提交表单之前正确输入 我该怎么做 我还有旋转器和 RadioGroup 按钮 你可以加验证在提交按钮上单击 private boolean validateFields int yourDesire
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 在 Anko DSL 中创建自定义 View/ViewGroup 类

    我想创建一个自定义视图 它只是一些 Android 视图的包装 我考虑创建一个自定义 ViewGroup 来管理其子视图的布局 但我不需要这么复杂 我基本上想做的是 class MainActivity verticalLayout tex
  • android webview 函数 onPagefinished 被调用两次

    我的android webview功能onPageFinished被调用两次 我不知道为什么 但它在 android 2 2 上运行良好 但当我将其升级到 4 时 它就不起作用了 代码附在下面 Code Override public vo
  • 毕加索动画加载图像

    我有以下代码在毕加索中加载图像 使用可绘制的占位符在图像下载时显示 不过 我想要的是一个动画旋转进度条样式的旋转器 它可以在图像加载时不断地旋转 就像我在大多数专业应用程序中看到的那样 毕加索似乎不支持这一点 只支持静态图像可绘制 有没有办
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何查看 Android 上的 Wi-Fi 是否已连接?

    我什至不希望我的用户尝试下载某些内容 除非他们连接了 Wi Fi 然而 我似乎只能判断是否启用了 Wi Fi 但他们仍然可以有 3G 连接 android net wifi WifiManager m WifiManager getSyst
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • 直接使用从密钥库加载的 SecretKey 时,密钥用户未经过身份验证

    我正在尝试使用 Cipher 和在 KeyStore 中加载的 SecretKey 来加密数据 但总是收到此错误 导致 android security KeyStoreException 关键用户未经过身份验证 我尝试自己创建 Secre
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计

随机推荐

  • Linq-to-sql orderby thenby

    我正在使用以下查询语法 from table where where orderby orderby 其中第一个 orderby 是日期 第二个 orderby 是日期 我认为这会像 orderby thenby 一样工作 但似乎在做其他事
  • 使用 WTForms 和 python 进行正则表达式验证

    这是我的代码 class CreateUser Form username StringField Username validators Regexp w message Username must contain only letter
  • 如何阻止运行同一程序的两个实例?

    我需要确保用户一次只能运行我的程序的一个实例 这意味着 我必须以编程方式检查相同的程序是否已经在运行 并在这种情况下退出 我想到的第一件事是在程序启动时在某处创建一个文件 然后 该程序的每个其他实例都会检查该文件 如果找到则退出 问题是 程
  • 使用 PDFBox 设置字符间距

    我目前正在使用 Java 和 PDFBox 库来动态创建一些 PDF 我需要能够设置某些文本的字符间距 跟踪 但似乎无法弄清楚 看起来有一种方法可以做到这一点 http ci apache org projects pdfbox javad
  • 如何将数据传递到 MonoTouch.Dialog 的委托中?

    给定以下代码 如何将 名字 姓氏 等数据传递到我的方法中BookASession SendMessage RootElement CreateBookASessionRoot return new RootElement Book a Se
  • 返回故障的 JAX-WS 服务器端 SOAPHandler 在 WebSphere v8 上获取“内部错误”

    我有一个服务器端 JAX WSSOAPHandler 在 WebSphere v8 上 在某些情况下需要使用字符串变量中的 SOAP 响应来响应客户端 我们称之为responseXml When responseXml包含成功 即非故障 的
  • 从 row.clicked 事件获取行元素

    我正在使用 Bootstrap Vue 中的表格 并且尝试在单击行时显示行详细信息 I used row clicked正如文档所说的事件 但我没有找到任何带有toggleDetails方法 所以我什至不知道如何打开它以及在哪里toggle
  • $inc 仅当 $addToSet 成功时

    在我的项目中 只有当我的 addToSet 成功时 我才想增加我的 数字 字段 有主题 每个主题都有用户 当用户加入某个主题时 我将他的 ID 添加到 users 数组中 并增加该主题中的用户数量 目前 即使用户已经在用户 数组 中 我的解
  • DBpedia SPARQL 查询美国大学

    我创建了一个正在运行的 SPARQL 查询DBpedia SNORQL SPARQL 端点 http dbpedia org snorql 查询的目的是获取美国大学或学院的列表 包括其经度 纬度和捐赠基金 该查询似乎有效 但似乎缺少一些记录
  • 单击链接从 HTTP 重定向到 HTTPS 时,如何通过询问基本身份验证凭据的窗口?

    我有一个网站 大多数页面通常通过 HTTP 使用 但其他一些页面只能通过 HTTPS 访问 站点受基本身份验证保护 HTTP 和 HTTPS 页面的凭据相同 当我在浏览器 FF 或 Chrome 中打开任何 HTTP 页面并单击指向 HTT
  • Tomcat 10.0.4 无法加载 servlet(@WebServlet 类)并出现 404 错误 [重复]

    这个问题在这里已经有答案了 我的第一个 Web 应用程序遇到问题 我使用 IntelliJ 作为 IDE 使用 Tomcat 作为 Web 服务器 我尝试访问的每个 servlet 都会抛出 404 错误 即使我复制了一些 YouTube
  • 如何仅使用 XAML 而不使用隐藏代码对 ListBox 进行排序?

    我需要对 a 中的字符串进行排序ListBox 但它通过另一个组件绑定到视图模型DataContext 所以我无法直接在 XAML 中实例化视图模型 如这个例子 http www galasoft ch mydotnet articles
  • 如何在 MS sql server 上的列中查找和删除字母

    我有一列字母数字 ID 我们称之为 IDS id 只能是数字 但其中一些包含杂散字符 例如 IDS 012345A 23456789AF 789789 我只想将它们转换为数字 所以输出将是 IDS 012345 23456789 78978
  • 如何避免C++中operator==实现中的错误?

    我经常有提供简单的逐个成员比较的类 class ApplicationSettings public bool operator const ApplicationSettings other const bool operator con
  • Python-评估字符串中的数学表达式[重复]

    这个问题在这里已经有答案了 我有一个关于字符串内数学表达式求值的问题 例如我的字符串如下 my str I have 6 2 3 apples 我想知道如何评估这个字符串并得到以下结果 I have 30 apples 有什么办法可以做到这
  • “调用目标已引发异常”错误 (mscorlib)

    我有一个用 ASP Net 2 0 开发的网站 抛出错误 Exception has been thrown by the target of an invocation 在生产环境中 它并没有在开发中抛出这个错误 源是 mscorlib
  • C++ 迭代器和循环优化

    我看到很多 C 代码看起来像这样 for const iterator it list begin const iterator ite list end it ite it 与更简洁的版本相反 for const iterator it
  • 将 bsTooltip 框的颜色更改为闪亮

    是否可以通过以下方式来设计工具提示框的美观性 bsTooltip闪亮的 我已经寻找答案 但就工具提示而言 所有关于美观的调整似乎仅针对宽度 即这个问题 https stackoverflow com questions 58320525 s
  • CSS“下划线”文本部分

    如何为文本添加下划线以获得与 测试 下看到的相同效果 我尝试将 TEST 封装在span并添加绝对 after withposition absolute 但我认为这不是正确的方法 并没有得到预期的结果 这是 HTML h1 class w
  • 使用 getevent 在已 root 的 Android 手机上拒绝权限

    我有非常简单的代码如下 Override public void onClick View v Log i MyApp Started try Process processStart Runtime getRuntime exec su