Settings.Global 监听 特定key 值 的 数值 注册与解除注册请可出完整代码
时间: 2023-07-16 11:16:59 浏览: 49
这里是使用ContentObserver来监听Settings.Global中指定key值的变化,并注册/解除注册的完整代码:
```
import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.provider.Settings;
public class SettingsObserver {
private Context mContext;
private ContentObserver mObserver;
private String mKey;
private OnSettingChangeListener mListener;
public interface OnSettingChangeListener {
void onSettingChange(String key, int value);
}
public SettingsObserver(Context context, String key, OnSettingChangeListener listener) {
mContext = context;
mKey = key;
mListener = listener;
mObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
if (uri != null && uri.toString().equals(Settings.Global.getUriFor(mKey).toString())) {
int value = Settings.Global.getInt(mContext.getContentResolver(), mKey, 0);
mListener.onSettingChange(mKey, value);
}
}
};
}
public void register() {
mContext.getContentResolver().registerContentObserver(Settings.Global.getUriFor(mKey), true, mObserver);
}
public void unregister() {
mContext.getContentResolver().unregisterContentObserver(mObserver);
}
}
```
使用示例:
```
SettingsObserver observer = new SettingsObserver(context, Settings.Global.WIFI_SLEEP_POLICY, new SettingsObserver.OnSettingChangeListener() {
@Override
public void onSettingChange(String key, int value) {
if (key.equals(Settings.Global.WIFI_SLEEP_POLICY)) {
// do something with the new value
}
}
});
observer.register();
```
在不需要监听时,需要调用`observer.unregister()`来解除注册。