Android中Settings.System的使用
2015-12-12 15:17
561 查看
如果有留意Android中系统设置Settings里面的源码,你会发现代码中频繁用到了Settings.System操作,该类通过键值对的形式,将一些特定的值以全局的模式保存到Setting的数据库中,我们可以通过它提供的get或者put形式的方法对其中的数据进行读写操作,(非系统级别的应用需要添加对应的权限)。当然,如果能够对frameworks进行修改,我们甚至可以在该类中添加一些特定的值,以方便自己或他人使用。
一、通过Settings.System进行读写
非系统权限,需要在App项目的AndroidMainfes.xml文件中添加如下权限:
二、在Settings.System添加一个自定义的全局变量
Settings.java文件位于frameworks\base\core\java\android\provider下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自定义变量,同时在该数组里面添加自定义变量名称,Settting和内部类System都需要添加(共四个地方),比如自定义系统变量SYSTEM_ZWH:
然后,在代码中我们就可以通过对于的get和put方法对该值进行读取和写入操作了。
一、通过Settings.System进行读写
//其中"getXXX"代表对应的类似方法,如getInt()、getBoolean、putString()等。 //通过变量名称获取值,如果变量不存在,数据库中没有设置过初始值或者该值类型不对,将抛出SettingNotFoundException异常 Settings.System.getXXX(ContentResolver cr, String name); //通过变量名称获取值,如果发生上面方法中导致异常的情况,将返给定的默认值 Settings.System.getXXX(ContentResolver cr, String name, XXX def); //将指定名称的值写入数据库 Settings.System.putXXX(ContentResolver cr,String name, XXX Value);
非系统权限,需要在App项目的AndroidMainfes.xml文件中添加如下权限:
<span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="tag" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);"><uses-permission</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="atn" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 0, 102);">android:name</span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">=</span><span class="atv" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"android.permission.READ_SETTINGS"</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="tag" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">/></span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="tag" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);"><uses-permission</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="atn" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 0, 102);">android:name</span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">=</span><span class="atv" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"android.permission.WRITE_SETTINGS"</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="tag" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">/></span>
二、在Settings.System添加一个自定义的全局变量
Settings.java文件位于frameworks\base\core\java\android\provider下,打开该文件,搜索关键词 SETTINGS_TO_BACKUP ,共有两处,一处是在Settings里面,另一处在内部类Settings.System里面,在SETTINGS_TO_BACKUP数组上面添加自定义变量,同时在该数组里面添加自定义变量名称,Settting和内部类System都需要添加(共四个地方),比如自定义系统变量SYSTEM_ZWH:
<span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">public</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">static</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">final</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 0, 102);">String</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> SYSTEM_ZWH </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="str" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 136, 0);">"system_zwh"</span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 0, 102);">Public</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">static</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 136);">final</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 0, 102);">String</span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">[]</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> SETTINGS_TO_BACKUP </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">...</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> SYSTEM_ZWH</span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">...</span><span class="pln" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="vertical-align: baseline; margin: 0px; padding: 0px; color: rgb(102, 102, 0);">}</span>
然后,在代码中我们就可以通过对于的get和put方法对该值进行读取和写入操作了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories