Fix bug #12978671 RTE while tapping on Access points

- revert back to a PreferenceActivity

Change-Id: Ie79b46908c9d8dcf3c2b77bd0999341c7e72050e
This commit is contained in:
Fabrice Di Meglio
2014-02-11 18:27:38 -08:00
parent 6502720566
commit 710e309951

View File

@@ -16,7 +16,6 @@
package com.android.settings; package com.android.settings;
import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.ContentUris; import android.content.ContentUris;
@@ -32,18 +31,21 @@ import android.preference.EditTextPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.provider.Telephony; import android.provider.Telephony;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.TelephonyProperties; import com.android.internal.telephony.TelephonyProperties;
public class ApnEditor extends SettingsPreferenceFragment public class ApnEditor extends PreferenceActivity
implements SharedPreferences.OnSharedPreferenceChangeListener, implements SharedPreferences.OnSharedPreferenceChangeListener,
Preference.OnPreferenceChangeListener { Preference.OnPreferenceChangeListener {
@@ -146,7 +148,7 @@ public class ApnEditor extends SettingsPreferenceFragment
@Override @Override
public void onCreate(Bundle icicle) { protected void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
addPreferencesFromResource(R.xml.apn_editor); addPreferencesFromResource(R.xml.apn_editor);
@@ -186,7 +188,7 @@ public class ApnEditor extends SettingsPreferenceFragment
mRes = getResources(); mRes = getResources();
final Intent intent = getActivity().getIntent(); final Intent intent = getIntent();
final String action = intent.getAction(); final String action = intent.getAction();
mFirstTime = icicle == null; mFirstTime = icicle == null;
@@ -206,24 +208,24 @@ public class ApnEditor extends SettingsPreferenceFragment
// original activity if they requested a result. // original activity if they requested a result.
if (mUri == null) { if (mUri == null) {
Log.w(TAG, "Failed to insert new telephony provider into " Log.w(TAG, "Failed to insert new telephony provider into "
+ getActivity().getIntent().getData()); + getIntent().getData());
finish(); finish();
return; return;
} }
// The new entry was created, so assume all will end well and // The new entry was created, so assume all will end well and
// set the result to be returned. // set the result to be returned.
getActivity().setResult(Activity.RESULT_OK, (new Intent()).setAction(mUri.toString())); setResult(RESULT_OK, (new Intent()).setAction(mUri.toString()));
} else { } else {
finish(); finish();
return; return;
} }
mCursor = getActivity().getContentResolver().query(mUri, sProjection, null, null, null); mCursor = managedQuery(mUri, sProjection, null, null);
mCursor.moveToFirst(); mCursor.moveToFirst();
mTelephonyManager = (TelephonyManager) getSystemService(Activity.TELEPHONY_SERVICE); mTelephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
fillUi(); fillUi();
} }
@@ -439,8 +441,8 @@ public class ApnEditor extends SettingsPreferenceFragment
} }
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu, inflater); super.onCreateOptionsMenu(menu);
// If it's a new APN, then cancel will delete the new entry in onPause // If it's a new APN, then cancel will delete the new entry in onPause
if (!mNewApn) { if (!mNewApn) {
menu.add(0, MENU_DELETE, 0, R.string.menu_delete) menu.add(0, MENU_DELETE, 0, R.string.menu_delete)
@@ -450,6 +452,7 @@ public class ApnEditor extends SettingsPreferenceFragment
.setIcon(android.R.drawable.ic_menu_save); .setIcon(android.R.drawable.ic_menu_save);
menu.add(0, MENU_CANCEL, 0, R.string.menu_cancel) menu.add(0, MENU_CANCEL, 0, R.string.menu_cancel)
.setIcon(android.R.drawable.ic_menu_close_clear_cancel); .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return true;
} }
@Override @Override
@@ -474,7 +477,20 @@ public class ApnEditor extends SettingsPreferenceFragment
} }
@Override @Override
public void onSaveInstanceState(Bundle icicle) { public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK: {
if (validateAndSave(false)) {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle); super.onSaveInstanceState(icicle);
if (validateAndSave(true)) { if (validateAndSave(true)) {
icicle.putInt(SAVED_POS, mCursor.getInt(ID_INDEX)); icicle.putInt(SAVED_POS, mCursor.getInt(ID_INDEX));
@@ -582,12 +598,12 @@ public class ApnEditor extends SettingsPreferenceFragment
} }
@Override @Override
public Dialog onCreateDialog(int id) { protected Dialog onCreateDialog(int id) {
if (id == ERROR_DIALOG_ID) { if (id == ERROR_DIALOG_ID) {
String msg = getErrorMsg(); String msg = getErrorMsg();
return new AlertDialog.Builder(getActivity()) return new AlertDialog.Builder(this)
.setTitle(R.string.error_title) .setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null) .setPositiveButton(android.R.string.ok, null)
.setMessage(msg) .setMessage(msg)
@@ -597,6 +613,19 @@ public class ApnEditor extends SettingsPreferenceFragment
return super.onCreateDialog(id); return super.onCreateDialog(id);
} }
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
super.onPrepareDialog(id, dialog);
if (id == ERROR_DIALOG_ID) {
String msg = getErrorMsg();
if (msg != null) {
((AlertDialog)dialog).setMessage(msg);
}
}
}
private void deleteApn() { private void deleteApn() {
getContentResolver().delete(mUri, null, null); getContentResolver().delete(mUri, null, null);
finish(); finish();