From 919aca5663be997eb238a9635e742858d29b8592 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Fri, 1 Jun 2012 16:44:13 -0700 Subject: Add contentobserver for nsd_on setting Bug: 6606274 Change-Id: I863b9e2a2446d697f3c9c49f24dcdc2b599f091e --- services/java/com/android/server/NsdService.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'services/java/com/android/server/NsdService.java') diff --git a/services/java/com/android/server/NsdService.java b/services/java/com/android/server/NsdService.java index cc8e6a4b2d3b..6ad8bd037469 100644 --- a/services/java/com/android/server/NsdService.java +++ b/services/java/com/android/server/NsdService.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.ContentResolver; import android.content.Intent; import android.content.pm.PackageManager; +import android.database.ContentObserver; import android.net.nsd.NsdServiceInfo; import android.net.nsd.DnsSdTxtRecord; import android.net.nsd.INsdManager; @@ -113,6 +114,26 @@ public class NsdService extends INsdManager.Stub { return cmdToString(msg.what); } + /** + * Observes the NSD on/off setting, and takes action when changed. + */ + private void registerForNsdSetting() { + ContentObserver contentObserver = new ContentObserver(this.getHandler()) { + @Override + public void onChange(boolean selfChange) { + if (isNsdEnabled()) { + mNsdStateMachine.sendMessage(NsdManager.ENABLE); + } else { + mNsdStateMachine.sendMessage(NsdManager.DISABLE); + } + } + }; + + mContext.getContentResolver().registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.NSD_ON), + false, contentObserver); + } + NsdStateMachine(String name) { super(name); addState(mDefaultState); @@ -124,6 +145,7 @@ public class NsdService extends INsdManager.Stub { setInitialState(mDisabledState); } setProcessedMessagesSize(25); + registerForNsdSetting(); } class DefaultState extends State { -- cgit v1.2.3