Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
监视Android系统设置值_Android_Settings_Listener - Fatal编程技术网

监视Android系统设置值

监视Android系统设置值,android,settings,listener,Android,Settings,Listener,我想观察系统设置,并在其值更改时得到通知。Cursor类有一个听起来不错的方法,但它不起作用,对它进行编码也感觉很奇怪。。。我就是这么做的: // Create a content resolver and add a listener ContentResolver resolver = getContentResolver(); resolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SE

我想观察系统设置,并在其值更改时得到通知。Cursor类有一个听起来不错的方法,但它不起作用,对它进行编码也感觉很奇怪。。。我就是这么做的:

    // Create a content resolver and add a listener
    ContentResolver resolver = getContentResolver();
    resolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS | ContentResolver.SYNC_OBSERVER_TYPE_PENDING | ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE, new MyObserver());

    // I somehow need to get an instance of Cursor to use setNotificationUri in the next step...
    Cursor cursor2 = resolver.query(Settings.System.CONTENT_URI, null, null, null, null);

    // For testing purposes monitor all system settings
    cursor2.setNotificationUri(resolver, Settings.System.CONTENT_URI);
听众:

public class MyObserver implements SyncStatusObserver {

public void onStatusChanged(int which) {
    Log.d("TEST", "status changed, which = " + which);

}
}
很明显,侦听器从未被调用,我在logcat中找不到具有指定测试标记的条目):(对于测试,我在android设置菜单中手动将亮度设置从手动更改为自动)。有没有暗示我做错了什么?还有其他更好的方法来监控Android系统设置吗


谢谢你的提示

这是如何做到的,效果很好:。注意,当用户在系统首选项屏幕中按back键时,某些设置首先被写入/实际更改,用户在该屏幕中更改了某些设置

下面是一些示例代码:

ContentResolver contentResolver = getContentResolver();
Uri setting = Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION);

// Make a listener
ContentObserver observer = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }
};

// Start listening
contentResolver.registerContentObserver(setting, false, observer);

// Stop listening
contentResolver.unregisterContentObserver(observer);
有关更多详细信息,请查看这些方法的文档