【问题标题】:Is it possible to grant INJECT_EVENTS permission to an app for dev/testing purposes是否可以出于开发/测试目的向应用授予 INJECT_EVENTS 权限
【发布时间】:2015-11-25 19:01:56
【问题描述】:

我正在开发一个安装到系统/应用程序中的应用程序(apk 交付给包含在系统映像中的手机制造商)。

我想执行一些需要向应用添加 INJECT_EVENTS 权限的概念验证实验。 AFAIK,为了让应用程序获得此权限,a)它需要是系统应用程序,b)它需要使用系统证书进行签名。

a) 没问题,因为这是应用程序最终会去的地方,而且我也在使用有根设备。

但是我没有 b) 的系统证书。

为了在应用交付给手机制造商之前对其进行开发和测试,我是否可以向应用授予此权限?

adb shell pm grant "app package" android.permission.INJECT_EVENTS 结果如下:

Operation not allowed: java.lang.SecurityException: Permission android.permission.INJECT_EVENTS is not a changeable permission type

【问题讨论】:

  • 可能是根设备。如果没有,请使用您拥有系统证书的自定义 ROM。

标签: android android-permissions


【解决方案1】:

adb shell 不是 SU 用户。使用 RunTime 将 shell 命令作为 SU 注入。使用任何工具授予您 SU 权限,然后执行您的命令

Process suProcess = Runtime.getRuntime().exec("su pm grant 'app package' android.permission.INJECT_EVENTS");
suProcess.waitFor();

【讨论】:

  • 谢谢。你知道是否有一种方法可以在运行时授予权限吗?
  • 这主要取决于 ROM 如何授予 SU 特权...因为大多数成为 root 的 android 用户不想授予程序任何特权,我真的不能说...在我的情况下,我使用授予权限的应用程序,并且此应用程序具有“始终允许 X 程序 SU 权限”,一旦设置,每当请求权限时,它们总是被授予......仍然,它是在运行时授予的......如果你“需要”以确保您不会被请求,您必须找到 SU shell 二进制文件并授予“yourapp-user”系统范围的权限(但我不知道如何执行此操作的详细信息)
  • 不起作用。似乎 INJECT_EVENTS 是不可授予的。
  • @mysh 它确实有效,但是,在没有“grant SU”二进制文件的系统中它不起作用(库存版本没有它)。您需要安装 Super/Switch User 应用程序,或者拥有一个根设备。 INJECT_EVENTS,就像任何其他权限一样,可以通过适当的应用程序进行调整
  • 对我来说它不起作用。 “不允许操作:java.lang.SecurityException:权限 android.permission.INJECT_EVENTS 不是可更改的权限类型”。至少在 Lollipop 5.1 上是这样。
【解决方案2】:

转到开发人员选项并在 USB 调试(安全设置)...INJECT_EVENTS 错误将得到解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多