自学内容网 自学内容网

踩坑记录:adb修改settings数据库ContentObserver无回调

在Android 14版本开发过程中遇到一个,通过adb修改settings数据库,发现生效但是监听的ContentObserver无回调

以背光亮度值调节为例

adb  shell settings put system screen_brightness 18

调节亮度值到指定值,修改完后查看

adb shell settings get system screen_brightness

18

修改完成,生效,但是ContentObserver的onChange(...)无回调

尝试了多种方式,无效。

修改方法如下:

1.首先查看是否有多个用户,以及当前运行的user id

adb shell pm list users  //查看有多少个user id

Users:
        UserInfo{0:Driver:111} running
        UserInfo{10:Driver:222} running

其中0表示当前正在运行的用户的user ID,name是用户名,显示设备有两个user

2.执行adb 命令修改settings数据库要加上指定user

adb shell settings put system screen_brightness 18 --user 0

指定user 0即可,如果不加user 0指定user 0,修改的会是user 10,但是ContentObserver的user.id是0,所以无回调

如何判断是user 0

可以执行如下打印,会发现打印的userId是0

context.getContentResolver().getUserId()

单用户不用

也可以看settings的数据

/data/system/user,会发现下面有0和10两个文件夹,高版本Android settings不再使用db存,而是xml文件


原文地址:https://blog.csdn.net/dzy_mails/article/details/142395259

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!