在android中,许多的系统属性都在settings应用当中进行设置的,比如wifi、蓝牙状态,当前本机语言,屏幕亮度等等一些相关的系统属性值。这些数据主要是存储在数据库中,对应的URI为:content://settings/system和content://settings/secure,这两个是主要的,目前也只是涉及到这两个数据库表的使用。

接下来,就了解下settings应用中是如何对系统属性进行设置的。

当需要获得当前wifi状态的值,调用已封装的方法如下:

Settings.Secure.getInt(getContentResolver() , Settings.Secure.WIFI_ON);

修改wifi状态只需要调用对应的setInt方法就可以实现。


当需要获得当前时间日期自动获取,调用如下:

Settings.System.getInt(getContentResolver() , "auto_time");

修改也是调用对应的setInt方法。


注意:这里修改settings的系统属性值需要有相关的权限。如修改wifi状态需要有android.permission.WRITE_SETTINGS权限,权限问题只要参考sdk下的描述就可以。


其实在settings应用中所获取或者修改属性都是调用了framework中android.provider.settings的Settings类对应的方法,也就是说真正有跟数据库打交道的是在provider中,这里也体现了ContentProvider的用途。

就大体说下android.provider.settings.Settings这个类吧。Settings里面创建了包含System和Secure在内的几个内部类,每个内部类都对应了一张数据库表,也就是继承自BaseColumns类,System和Secure类分别对应着system和secure数据库表。

对于上面通过getInt获得的字段,其实是在初始获得数据库数值的时候,首先是有getString方法将数据库数据保留,然后在integer.parseInt将数据转换成int类型。这就是settings读取和保留数据的基本原理。

更多相关文章

  1. Android之SQLite数据库使用
  2. sqlite3加密方案sqlcipher,及sqlcipher使用指南
  3. Android(安卓)- SQLite
  4. Android(安卓)Activity Launch Mode 启动模式详解
  5. MongoDB在Android上的使用体验
  6. Android(安卓)App异常检测及处理
  7. Android(安卓)属性动画工作原理
  8. Android(安卓)2016年度知名企业公司面试题
  9. 【Android】 开发即时聊天工具 YQ (仿QQ) 教程:目录

随机推荐

  1. android:scaleType、android:layout_alig
  2. 暮拾晨花,回望流年——我的2016
  3. Android应用程序进程启动过程(前篇)
  4. Android接入WebView(五)——浏览器制作总结
  5. ANDROID基础部分的总结
  6. android与Unity3d交互
  7. Android实现录屏直播(二)需求才是硬道理之
  8. Android签名证书生成
  9. Android有用代码片段2
  10. 【android】用camera实现view的伪3D的效