今天在setting里添加了一个新的变量,想要实现对这个变量的监听。现在记录下方法

首先就是明白一点,我们在system.setting里添加的变量,都会被保存在data/data/com.android.providers.settings/databases/settings/system 里面

INSERT INTO "system" VALUES(,'voice_unlock_screen',NULL);
INSERT INTO "system" VALUES(,'voice_unlock_and_launch1',NULL);
INSERT INTO "system" VALUES(,'voice_unlock_and_launch2',NULL);
INSERT INTO "system" VALUES(,'voice_unlock_and_launch3',NULL);
INSERT INTO "system" VALUES(,'volume_voice_earpiece','');
INSERT INTO "system" VALUES(,'volume_ring_speaker','');
INSERT INTO "system" VALUES(,'com_android_contacts_mtk_unread','');
INSERT INTO "system" VALUES(,'hide_rotation_lock_toggle_for_accessibility','');
INSERT INTO "system" VALUES(,'pointer_location','');
INSERT INTO "system" VALUES(,'nanlog_clock_style','');

所以,如果我们要监听,我们只需要监听它所在的数据库就行了

1.写数据库监听动作

    private ContentObserver mAnalogClockObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
int value = Settings.System.getInt(
mContext.getContentResolver(), Settings.System.NANLOG_CLOCK_STYLE, DEFAULT_ANALOG_CLOCK);
android.util.Log.e("zhangshuli", "value==="+value);
updateClockView(value);
} };

2.注册监听的数据库

        mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.NANLOG_CLOCK_STYLE),
false, mAnalogClockObserver);

这里最主要的就是获得监听数据库的uri,如果我们打log就可以发现,uri如下

uri===content://settings/system/nanlog_clock_style

从system.setting获得变量数据库的方法就是getUriFor方法,具体实现如下

public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global");
getUriFor(CONTENT_URI, name);
public static Uri getUriFor(Uri uri, String name) {
return Uri.withAppendedPath(uri, name);
}

这样我们就可以实现数据库的监听了

system.setting-全局变量数据监听的更多相关文章

  1. Python黑客编程基础3网络数据监听和过滤

    网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及 ...

  2. 谈谈数据监听observable的实现

    一.概述 数据监听实现上就是当数据变化时会通知我们的监听器去更新所有的订阅处理,如: var vm = new Observer({a:{b:{x:1,y:2}}}); vm.watch('a.b.x ...

  3. vue中的数据监听以及数据交互

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[,,] } }).$watch("ar ...

  4. Vue获取dom和数据监听

    Vue获取dom对象 在js和jq中我们都能获取dom对象例如 // 获取id=1的div标签 <div id=d1>dom对象</div> // js语法 let ele = ...

  5. vue2.0 之计算属性和数据监听

    计算属性computed <template> <div> <input type="text" name="" v-model= ...

  6. Vue之数据监听存在的问题

    Vue之数据监听 当数据监听的是列表时,数据发生改变,不会被监听到. // 用$set修改数组中的数组能够被监听 // app.$set(this.hobby, 0, "爱你哦") ...

  7. 设置USB数据监听

    设置USB数据监听   在Kali Linux中,USB也是作为一个通信端口进行存在.常见的鼠标.键盘.U盘都是通过USB接口传输数据.所以,对于USB接口也可以实施监听,类似网络接口一样.在进行US ...

  8. Vue3 为何使用 Proxy 实现数据监听

    博客地址:https://ainyi.com/93 vue3 响应式数据放弃了 Object.defineProperty,而使用Proxy来代替它 我们知道,在 vue2 中,实现数据监听是使用Ob ...

  9. Blazor和Vue对比学习(基础1.8):Blazor中实现计算属性和数据监听

    1.7章<传递UI片断>,需要做几个案例,这部分暂停消化几天.我们先把基础部分相对简单的最后两章学习了. 计算属性和数据监听是Vue当中的概念,本质上都是监听数据的变化,然后做出响应.两者 ...

随机推荐

  1. 今日SGU 5.26

    #include<bits/stdc++.h> #define de(x) cout<<#x<<"="<<x<<endl ...

  2. PKU 2528 Mayor's posters

    题意: 一个公告板上面贴海报,宽度都是一样的,长度可能不一样.后面的海报可能把前面的覆盖掉.问最后能看见多少张不同的海报. 思路: 这题原来做过,是用线段树的区间染色写的.记录每个区间是纯色还是杂色. ...

  3. Spring MVC数据转换

    样例:把一个字符串封装而一个对象. 如:username:password格式的数据ZhangSan:1234.我们把这个数据封装成一个User对象.以下分别使用属性编辑器与转换器来实现. 1.自己定 ...

  4. noip 2018 day2 T1 旅行 基环树 tarjan

    Code: #include<cstdio> #include<cstring> #include<string> #include<stack> #i ...

  5. 学习参考《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码

    我们知道,TensorFlow是比较流行的深度学习框架,除了看手册文档外,推荐大家看看<Tensorflow深度学习>,共分5方面内容:基础知识.关键模块.算法模型.内核揭秘.生态发展.前 ...

  6. Annotation中Result的params属性

    这个属性只有在重定向时有用,而转发时不会设置参数. 如: @Results({ @Result(name="success", location="page", ...

  7. sed的一些tricks

    1.sed -f xx.sed input_file 可以将一系列操作放在一个xx.sed脚本里执行 ``` #!/bin/sed -f ``` 2.在匹配字符串后面或行尾添加内容 在text后面添加 ...

  8. js---12对象创建方式,构造器,原型

    <script type="text/javascript"> var o = {}; var o1 = new Object();//这2种方式创建对象是一样的,因为 ...

  9. region实现大纲效果

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. hadoop-2.6.0.tar.gz + hive-1.0.0.tar.gz + pig-0.15.0.tar.gz的安装

    这里,为什么选择用hadoop-2.6.0.tar.gz  +   hive-1.0.0.tar.gz是为了搭配兼容. hadoop-2.6.0.tar.gz  +   hive-1.0.0.tar. ...