问题描述
有开发者在运行 Android 10 设备上尝试通过 adb shell 命令禁用特定应用的震动功能时遇到了困难。具体来说,当调用了appops set ... VIBRATE ignore
命令后,收到了一个错误提示:inaccessible or not found
。
查阅相关资料可以了解以下几点:
1. 在 Android 10 中,一旦用户将某个应用程序的震动设置为“禁止”或允许仅在使用时开启,则从 App Ops 设置进行进一步操作无法生效。这是因为系统会优先采用自身的 uid 模式。
2. 确认了上述情况后,还有人建议重新启动应用的通知设置再尝试使用 adb 命令。
然而即使执行了其中的某些建议(如重新启用通知设置),仍然未解决问题。最终解决方法是完全关闭所有通知并再度打开时,将震动选项一并禁用,然后再重新操作。
解决方案
方案 1:应用通知和震动设置分离处理
为了进一步确认问题所在,可以分步操作。首先,确保应用程序的通知设置和 App Ops 的震动权限都处于正确状态:
- 检查并重置应用通知设置:进入“设置” > “通知” > 找到目标应用的开关,禁用其所有通知类型(包括震动)。如果有权限控制,则重新分配并观察是否可以正常修改。
- 再次使用 App Ops 检查和调整相关权限:
- 使用
pm list packages | sed 's/package://')
列出所有安装包名。 - 然后对每个包检查它在 VIBRATE 权限下的状态:
appops get pkg_name VIBRATE
- 如果发现与预期不符的信息,尝试设置其权限为禁用或仅允许特定情况下使用:
appops set pkg_name_vibration ignore
- 使用
注意:某些系统优化功能可能会干扰您的操作,请确保已正确退出并重启应用。
方案 2:全面检查和重置设备状态
如果以上调整无果,可以考虑更彻底地解决问题:
完全禁用所有通知:
- 进入“设置” > “通知”,关闭设备上所有应用的通知权限。
- 确认操作是否对目标应用程序的震动行为有影响。
再启用通知并调整震动设置:
- 重新进入“通知”设置,针对目标应用禁用(或调整)震动相关选项。
- 实际体验设备运行一段时间,观察更改后的效果,并且通过 adb shell 检查其状态是否已正常。
- 重启应用和操作系统检查变动性:有时简单的重启可以解锁某些临时的系统锁定行为。
综上所述,以上分步操作尝试可以帮助开发者找到导致问题的根本原因并顺利解决震动相关的用户行为管理。务必根据实际设备情况灵活调整具体步骤以契合需要优化的应用程序特性。
正文完