From 9d4b5486198a16053e5fdeba6b34268104faead2 Mon Sep 17 00:00:00 2001 From: Amit Mahajan Date: Fri, 5 Jun 2015 15:31:34 -0700 Subject: [PATCH] Change to trigger client initiated OMA-DM session on System update req. Bug: 21603815 Change-Id: I401099a9aeced578ee914ddbebf1f5982f276780 --- .../android/settings/DeviceInfoSettings.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java index 37d9c9cf007..78109d1520a 100644 --- a/src/com/android/settings/DeviceInfoSettings.java +++ b/src/com/android/settings/DeviceInfoSettings.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Build; import android.os.Bundle; +import android.os.PersistableBundle; import android.os.SELinux; import android.os.SystemClock; import android.os.SystemProperties; @@ -34,6 +35,7 @@ import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.provider.SearchIndexableResource; import android.provider.Settings; +import android.telephony.CarrierConfigManager; import android.text.TextUtils; import android.util.Log; import android.widget.Toast; @@ -249,10 +251,39 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In } } else if (preference.getKey().equals(KEY_DEVICE_FEEDBACK)) { sendFeedback(); + } else if(preference.getKey().equals(KEY_SYSTEM_UPDATE_SETTINGS)) { + CarrierConfigManager configManager = + (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE); + PersistableBundle b = configManager.getConfig(); + if (b.getBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL)) { + ciActionOnSysUpdate(b); + } } return super.onPreferenceTreeClick(preferenceScreen, preference); } + /** + * Trigger client initiated action (send intent) on system update + */ + private void ciActionOnSysUpdate(PersistableBundle b) { + String intentStr = b.getString(CarrierConfigManager. + KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING); + if (!TextUtils.isEmpty(intentStr)) { + String extra = b.getString(CarrierConfigManager. + KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING); + String extraVal = b.getString(CarrierConfigManager. + KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING); + + Intent intent = new Intent(intentStr); + if (!TextUtils.isEmpty(extra)) { + intent.putExtra(extra, extraVal); + } + Log.d(LOG_TAG, "ciActionOnSysUpdate: broadcasting intent " + intentStr + + " with extra " + extra + ", " + extraVal); + getActivity().getApplicationContext().sendBroadcast(intent); + } + } + private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup, String preference, String property ) { if (SystemProperties.get(property).equals("")) {