system.setting-全局變量數據監聽


今天在setting里添加了一個新的變量,想要實現對這個變量的監聽。現在記錄下方法

首先就是明白一點,我們在system.setting里添加的變量,都會被保存在data/data/com.android.providers.settings/databases/settings/system 里面

INSERT INTO "system" VALUES(120,'voice_unlock_screen',NULL);
INSERT INTO "system" VALUES(121,'voice_unlock_and_launch1',NULL);
INSERT INTO "system" VALUES(122,'voice_unlock_and_launch2',NULL);
INSERT INTO "system" VALUES(123,'voice_unlock_and_launch3',NULL);
INSERT INTO "system" VALUES(124,'volume_voice_earpiece','4');
INSERT INTO "system" VALUES(125,'volume_ring_speaker','8');
INSERT INTO "system" VALUES(126,'com_android_contacts_mtk_unread','0');
INSERT INTO "system" VALUES(127,'hide_rotation_lock_toggle_for_accessibility','0');
INSERT INTO "system" VALUES(133,'pointer_location','1');
INSERT INTO "system" VALUES(138,'nanlog_clock_style','0');

所以,如果我們要監聽,我們只需要監聽它所在的數據庫就行了

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);
        } 

這樣我們就可以實現數據庫的監聽了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM