监视Android系统设置值
我想观察系统设置,并在其值更改时得到通知。Cursor类有一个听起来不错的方法,但它不起作用,对它进行编码也感觉很奇怪。。。我就是这么做的:监视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
// 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);
有关更多详细信息,请查看这些方法的文档