Android 13触发触摸事件遇INJECT_EVENTS权限SecurityException问题求助
解决INJECT_EVENTS权限导致的SecurityException问题
你遇到的java.lang.SecurityException是因为INJECT_EVENTS属于系统级权限,普通签名的APP无法直接获取,以下是具体解决思路:
核心权限限制
INJECT_EVENTS权限的保护级别为signature|privileged,只有满足任一以下条件的APP才能使用:
- 采用与当前Android系统一致的签名进行编译签名
- 将APP安装到
/system/priv-app目录下(需要设备Root权限)
你之前尝试的普通签名完全不满足上述要求,所以问题无法解决。
替代方案(无需系统权限)
如果只是需要实现触摸事件注入的需求,可以考虑以下两种方式:
- 测试场景下使用Instrumentation:把注入逻辑放到Android测试APK中(而非普通应用APK),通过Android Test Framework运行测试用例,此时Instrumentation会自动获得事件注入权限。
- 使用ADB命令:通过
adb shell input tap <x坐标> <y坐标>命令模拟触摸点击,或者adb shell input swipe <起始x> <起始y> <结束x> <结束y> <时长>模拟滑动,无需在APP中申请任何权限。
针对你的代码说明
你直接在普通应用中实例化Instrumentation并调用sendPointerSync()的方式,在非系统级APP中完全行不通,因为普通APP没有权限调用该系统API。
内容的提问来源于stack exchange,提问作者kishan verma
相关产品推荐
相关产品推荐

