踩坑记录:adb修改settings数据库ContentObserver无回调
在Android 14版本开发过程中遇到一个,通过adb修改settings数据库,发现生效但是监听的ContentObserver无回调
以背光亮度值调节为例
adb shell settings put system screen_brightness 18
调节亮度值到指定值,修改完后查看
adb shell settings get system screen_brightness18
修改完成,生效,但是ContentObserver的onChange(...)无回调
尝试了多种方式,无效。
修改方法如下:
1.首先查看是否有多个用户,以及当前运行的user id
adb shell pm list users //查看有多少个user idUsers:UserInfo{0:Driver:111} runningUserInfo{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文件