settings的使用说明

作者: 97690CE50CC872D | 来源:发表于2017-07-24 19:29 被阅读526次

    Android中,许多的系统属性都在settings应用当中进行设置的,比如wifi、蓝牙状态,当前本机语言,屏幕亮度等等一些相关的系统属性值
    数据主要是存储在数据库中,
    对应的URI为:

            content://settings/system
    
            content://settings/secure
    

    <1> 获取和设置一些系统属性,通过一系列的get/set方法

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

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

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

    Settings.System.getInt(getContentResolver() , “auto_time”);

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

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

    <2>添加自定义的属性(好处是在缓存中不会被清除)

    需要系统app权限 需要加 :

    android:sharedUserId="android.uid.system"
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    

    还需要用系统签名打包
    Settings.Secure.putInt(context.getContentResolver(), key, value);
    Settings.Secure.getInt(appContext.getContentResolver(), value);

    使用adb命令读取:

    adb shell settings get system telephony_call_app
    adb shell settings put system telephony_call_app  com.xxx.demo(packagename)
    

    对build.prop文件的操作

    SystemProperties.get ("dev_usb_otg.enable")
    SystemProperties.put ("dev_usb_otg.enable",value)
    

    对应的adb操作

    adb shell getprop dev.usb_otg.enable
    adb shell setprop dev.usb_otg.enable value
    

    监听Settings的值的变化

    通过ContentObserver 来监听值的变化。

    1.首先自定义一个类继承ContentObserver。在onChange()方法里面再次去获取Settings的值。

    class SettingsValueChangeContentObserver extends ContentObserver {
        public SettingsValueChangeContentObserver() {
            super( new Handler());
        }
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Toast.makeText(MainActivity.this, Settings.System.getString(getContentResolver(), SAVE_NAME), Toast.LENGTH_SHORT).show();
        }  
    }
    

    2.注册监听

    mContentOb = new SettingsValueChangeContentObserver();
    getContentResolver().registerContentObserver(Settings.System.getUriFor(SAVE_NAME),true, mContentOb);//注册监听
    

    3.当应用退出的时候取消监听

     @Override
    protected void onStop() {
        super.onStop();
        getContentResolver().unregisterContentObserver(mContentOb);
       }

    相关文章

      网友评论

        本文标题:settings的使用说明

        本文链接:https://www.haomeiwen.com/subject/bmxikxtx.html