From 8d1eee08f76e64a728be6f046e8d73fb957c594f Mon Sep 17 00:00:00 2001 From: Yuming Mao Date: Wed, 15 Aug 2018 15:10:23 +0800 Subject: [PATCH] Fix issue that read-only apns can be edited When entering to ApnEditor with ApnSettings#onPreferenceTreeClick(), subId is not passed. So invalid subId is used and it gets wrong carrier config values. To resolve this issue, remove unnecessary ApnSettings click event. The only click event for launching ApnEditor is ApnPreference click event. Test: manual - Check that the read-only APN can't be edited when tap the edge of the APN settings screen Bug: 117302653 Change-Id: I0a61b409539d6e4f6aa9860235e61c43c76640fa --- .../settings/network/ApnPreference.java | 30 +++++++------------ .../android/settings/network/ApnSettings.java | 13 +------- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/src/com/android/settings/network/ApnPreference.java b/src/com/android/settings/network/ApnPreference.java index ee53ca9518f..27d275f83c6 100755 --- a/src/com/android/settings/network/ApnPreference.java +++ b/src/com/android/settings/network/ApnPreference.java @@ -27,15 +27,12 @@ import android.telephony.SubscriptionManager; import android.util.AttributeSet; import android.util.Log; import android.view.View; -import android.view.View.OnClickListener; import android.widget.CompoundButton; import android.widget.RadioButton; -import android.widget.RelativeLayout; import com.android.settings.R; -public class ApnPreference extends Preference implements - CompoundButton.OnCheckedChangeListener, OnClickListener { +public class ApnPreference extends Preference implements CompoundButton.OnCheckedChangeListener { final static String TAG = "ApnPreference"; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; @@ -81,11 +78,6 @@ public class ApnPreference extends Preference implements rb.setVisibility(View.GONE); } } - - View textLayout = view.findViewById(R.id.text_layout); - if ((textLayout != null) && textLayout instanceof RelativeLayout) { - textLayout.setOnClickListener(this); - } } public boolean isChecked() { @@ -115,16 +107,16 @@ public class ApnPreference extends Preference implements } } - public void onClick(android.view.View v) { - if ((v != null) && (R.id.text_layout == v.getId())) { - Context context = getContext(); - if (context != null) { - int pos = Integer.parseInt(getKey()); - Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos); - Intent editIntent = new Intent(Intent.ACTION_EDIT, url); - editIntent.putExtra(ApnSettings.SUB_ID, mSubId); - context.startActivity(editIntent); - } + @Override + protected void onClick() { + super.onClick(); + Context context = getContext(); + if (context != null) { + int pos = Integer.parseInt(getKey()); + Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos); + Intent editIntent = new Intent(Intent.ACTION_EDIT, url); + editIntent.putExtra(ApnSettings.SUB_ID, mSubId); + context.startActivity(editIntent); } } diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index 013ae8cc7c8..5bc52cc9d3d 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -21,7 +21,6 @@ import android.app.Dialog; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.ContentResolver; -import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.Intent; @@ -64,8 +63,7 @@ import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import java.util.ArrayList; -public class ApnSettings extends RestrictedSettingsFragment implements - Preference.OnPreferenceChangeListener { +public class ApnSettings extends RestrictedSettingsFragment { static final String TAG = "ApnSettings"; public static final String EXTRA_POSITION = "position"; @@ -312,7 +310,6 @@ public class ApnSettings extends RestrictedSettingsFragment implements pref.setTitle(name); pref.setSummary(apn); pref.setPersistent(false); - pref.setOnPreferenceChangeListener(this); pref.setSubId(subId); boolean selectable = ((type == null) || !type.equals("mms")); @@ -404,14 +401,6 @@ public class ApnSettings extends RestrictedSettingsFragment implements startActivity(intent); } - @Override - public boolean onPreferenceTreeClick(Preference preference) { - int pos = Integer.parseInt(preference.getKey()); - Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos); - startActivity(new Intent(Intent.ACTION_EDIT, url)); - return true; - } - public boolean onPreferenceChange(Preference preference, Object newValue) { Log.d(TAG, "onPreferenceChange(): Preference - " + preference + ", newValue - " + newValue + ", newValue type - "