android系统属性获取及设置
系統(tǒng)屬性獲取及設(shè)置中的設(shè)置值
| data/data/com.android.providers.settings/databases/settings.db |
1.系統(tǒng)屬性獲取及設(shè)置
android.os.SystemProperties文件
android.os.Build文件
可以取得系統(tǒng)版本等信息。
類似adb shell : getprop看到的值
2.設(shè)置中的設(shè)置值
在android中,許多的系統(tǒng)屬性都在settings應(yīng)用當(dāng)中進行設(shè)置的,比如wifi、藍牙狀態(tài),當(dāng)前本機語言,屏幕亮度等等一些相關(guān)的系統(tǒng)屬性值。這些數(shù)據(jù)主要是存儲在數(shù)據(jù)庫中,對應(yīng)的URI 為:content://settings/system和content://settings/secure,這兩個是主要的,目前也只是涉及到這兩個數(shù)據(jù)庫表的使用。
接下來,就了解下settings應(yīng)用中是如何對系統(tǒng)屬性進行設(shè)置的。
當(dāng)需要獲得當(dāng)前wifi狀態(tài)的值,調(diào)用已封裝的方法如下:
Settings.Secure.getInt(getContentResolver() , Settings.Secure.WIFI_ON);
修改wifi狀態(tài)只需要調(diào)用對應(yīng)的setInt方法就可以實現(xiàn)。
當(dāng)需要獲得當(dāng)前時間日期自動獲取,調(diào)用如下:
Settings.System.getInt(getContentResolver() , "auto_time");
修改也是調(diào)用對應(yīng)的setInt方法。
注意:這里修改settings的系統(tǒng)屬性值需要有相關(guān)的權(quán)限。如修改wifi狀態(tài)需要有android.permission.WRITE_SETTINGS權(quán)限,權(quán)限問題只要參考sdk下的描述就可以。
其實在settings應(yīng)用中所獲取或者修改屬性都是調(diào)用了framework中android.provider.settings的 Settings類對應(yīng)的方法,也就是說真正有跟數(shù)據(jù)庫打交道的是在provider中,這里也體現(xiàn)了ContentProvider的用途。
就大體說下android.provider.settings.Settings這個類吧。Settings里面創(chuàng)建了包含System和 Secure在內(nèi)的幾個內(nèi)部類,每個內(nèi)部類都對應(yīng)了一張數(shù)據(jù)庫表,也就是繼承自BaseColumns類,System和Secure類分別對應(yīng)著 system和secure數(shù)據(jù)庫表。
對于上面通過getInt獲得的字段,其實是在初始獲得數(shù)據(jù)庫數(shù)值的時候,首先是有g(shù)etString方法將數(shù)據(jù)庫數(shù)據(jù)保留,然后在integer.parseInt將數(shù)據(jù)轉(zhuǎn)換成int類型。這就是settings讀取和保留數(shù)據(jù)的基本原理。
ref:
Android系統(tǒng)設(shè)置— android.provider.Settings
https://www.cnblogs.com/bluestorm/p/3665596.html
總結(jié)
以上是生活随笔為你收集整理的android系统属性获取及设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最简单的Sublime插件开发教程
- 下一篇: 日常笔记-css\html篇