Add contentobserver for nsd_on setting
Bug: 6606274
Change-Id: I863b9e2a2446d697f3c9c49f24dcdc2b599f091e
diff --git a/services/java/com/android/server/NsdService.java b/services/java/com/android/server/NsdService.java
index cc8e6a4..6ad8bd0 100644
--- a/services/java/com/android/server/NsdService.java
+++ b/services/java/com/android/server/NsdService.java
@@ -20,6 +20,7 @@
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 @@
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 @@
setInitialState(mDisabledState);
}
setProcessedMessagesSize(25);
+ registerForNsdSetting();
}
class DefaultState extends State {