From 87ca70172cc25ed2195d310b71d9c652a0757b88 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 9 May 2012 14:03:26 -0700 Subject: [PATCH] Tweak development settings to report system property changes. Uses the new IBinder hack to tell all registered system services about the property change. This should get most processes of interest... some of them many times over, even. This implementation does the broadcast for every debug property change, though currently the only ones handling it are the trace and layout bounds debugging properties. Change-Id: Ibe3a10a40184751b8b2ed00021a224182d8f3f30 --- .../android/settings/DevelopmentSettings.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index fc5a0b6e3fb..e5fea54d8de 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -30,6 +30,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.os.AsyncTask; import android.os.BatteryManager; import android.os.Build; import android.os.Bundle; @@ -49,6 +50,7 @@ import android.preference.PreferenceScreen; import android.preference.Preference.OnPreferenceChangeListener; import android.provider.Settings; import android.text.TextUtils; +import android.util.Log; import android.view.Gravity; import android.view.HardwareRenderer; import android.view.IWindowManager; @@ -103,6 +105,7 @@ public class DevelopmentSettings extends PreferenceFragment private Switch mEnabledSwitch; private boolean mLastEnabledState; private boolean mHaveDebugSettings; + private boolean mDontPokeProperties; private CheckBoxPreference mEnableAdb; private CheckBoxPreference mKeepScreenOn; @@ -327,6 +330,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void resetDangerousOptions() { + mDontPokeProperties = true; for (int i=0; i { + @Override + protected Void doInBackground(Void... params) { + String[] services; + try { + services = ServiceManager.listServices(); + } catch (RemoteException e) { + return null; + } + for (String service : services) { + IBinder obj = ServiceManager.checkService(service); + if (obj != null) { + Parcel data = Parcel.obtain(); + try { + obj.transact(IBinder.SYSPROPS_TRANSACTION, data, null, 0); + } catch (RemoteException e) { + } + data.recycle(); + } + } + return null; + } + } }