【问题标题】:Monitor Android system settings values监控 Android 系统设置值
【发布时间】:2011-09-05 15:43:01
【问题描述】:

我想查看系统设置并在其值更改时收到通知。 Cursor 类有一个 setNotificationUri 方法,听起来不错,但它不起作用,编码也感觉很奇怪......这就是我所做的:

    // 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 系统设置吗?

感谢任何提示!

【问题讨论】:

    标签: android settings listener


    【解决方案1】:

    这是如何完成的,效果很好:How to implement a ContentObserver for call logs。请注意,当用户在系统偏好设置屏幕中按下后退键时,某些设置是第一次写入/真正更改的,他更改了一些设置!

    【讨论】:

      【解决方案2】:

      下面是一些示例代码:

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

      查看任何这些方法的文档以获取更多详细信息。

      【讨论】:

        猜你喜欢
        • 2019-12-10
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-24
        相关资源
        最近更新 更多