我想监视系统设置并在其值发生变化时收到通知。 Cursor 类有一个设置通知Uri听起来不错的方法,但它不起作用,而且编码也感觉很奇怪......这就是我所做的:
// 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 中找不到带有指定 TEST 标签的条目):(为了测试,我在 android 设置菜单中手动将亮度设置从手动更改为自动)。有什么提示我做错了什么吗?还有其他更好的方法来监控 Android 系统设置吗?
感谢您的任何提示!
这是一些示例代码:
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);
查看这些方法的文档以了解更多详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)