diff options
author | Yorke Lee <yorkelee@google.com> | 2015-06-11 16:39:04 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-11 16:39:04 +0000 |
commit | 28309e70ab1e5099d4083a12e9417b579ca43ee2 (patch) | |
tree | d9060f2269bed0dffab51a75ee077dde23bf204f | |
parent | 429a40f183a06e2c819ca15e435edd89ec24cf5d (diff) | |
parent | 955eb1037f849b6431400668f9ac179fa7e5d70c (diff) |
am 955eb103: Merge "Fix crash after rotation in SelectAccountDialogFragment" into mnc-dev
* commit '955eb1037f849b6431400668f9ac179fa7e5d70c':
Fix crash after rotation in SelectAccountDialogFragment
-rw-r--r-- | src/com/android/dialer/SpecialCharSequenceMgr.java | 77 |
1 files changed, 45 insertions, 32 deletions
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java index a57e2ee57..31aa5c3c7 100644 --- a/src/com/android/dialer/SpecialCharSequenceMgr.java +++ b/src/com/android/dialer/SpecialCharSequenceMgr.java @@ -90,6 +90,43 @@ public class SpecialCharSequenceMgr { */ private static QueryHandler sPreviousAdnQueryHandler; + public static class HandleAdnEntryAccountSelectedCallback extends SelectPhoneAccountListener{ + final private TelecomManager mTelecomManager; + final private QueryHandler mQueryHandler; + final private SimContactQueryCookie mCookie; + + public HandleAdnEntryAccountSelectedCallback(TelecomManager telecomManager, + QueryHandler queryHandler, SimContactQueryCookie cookie) { + mTelecomManager = telecomManager; + mQueryHandler = queryHandler; + mCookie = cookie; + } + + @Override + public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, + boolean setDefault) { + Uri uri = mTelecomManager.getAdnUriForPhoneAccount(selectedAccountHandle); + handleAdnQuery(mQueryHandler, mCookie, uri); + // TODO: Show error dialog if result isn't valid. + } + + } + + public static class HandleMmiAccountSelectedCallback extends SelectPhoneAccountListener{ + final private Context mContext; + final private String mInput; + public HandleMmiAccountSelectedCallback(Context context, String input) { + mContext = context.getApplicationContext(); + mInput = input; + } + + @Override + public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, + boolean setDefault) { + TelecomUtil.handleMmi(mContext, mInput, selectedAccountHandle); + } + } + /** This class is never instantiated. */ private SpecialCharSequenceMgr() { } @@ -155,9 +192,8 @@ public class SpecialCharSequenceMgr { * This code works alongside the Asynchronous query handler {@link QueryHandler} * and query cancel handler implemented in {@link SimContactQueryCookie}. */ - static boolean handleAdnEntry(final Context context, String input, EditText textField) { + static boolean handleAdnEntry(Context context, String input, EditText textField) { /* ADN entries are of the form "N(N)(N)#" */ - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager == null @@ -221,23 +257,11 @@ public class SpecialCharSequenceMgr { Uri uri = telecomManager.getAdnUriForPhoneAccount(null); handleAdnQuery(handler, sc, uri); } else if (subscriptionAccountHandles.size() > 1){ - SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { - @Override - public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, - boolean setDefault) { - Uri uri = - telecomManager.getAdnUriForPhoneAccount(selectedAccountHandle); - handleAdnQuery(handler, sc, uri); - //TODO: show error dialog if result isn't valid - } - @Override - public void onDialogDismissed() {} - }; - - // NOTE: If you want to support rotation of this dialog need - // to refactor the listener and set it in DialpadFragment.onCreate() + SelectPhoneAccountListener callback = + new HandleAdnEntryAccountSelectedCallback(telecomManager, handler, sc); + DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance( - subscriptionAccountHandles, listener); + subscriptionAccountHandles, callback); dialogFragment.show(((Activity) context).getFragmentManager(), TAG_SELECT_ACCT_FRAGMENT); } else { @@ -287,20 +311,9 @@ public class SpecialCharSequenceMgr { // a subscription account. return TelecomUtil.handleMmi(context, input, null); } else if (subscriptionAccountHandles.size() > 1){ - SelectPhoneAccountListener listener = new SelectPhoneAccountListener() { - @Override - public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle, - boolean setDefault) { - TelecomUtil.handleMmi(context.getApplicationContext(), - input, selectedAccountHandle); - //TODO: show error dialog if result isn't valid - } - @Override - public void onDialogDismissed() {} - }; - - // NOTE: If you want to support rotation of this dialog need - // to refactor the listener and set it in DialpadFragment.onCreate() + SelectPhoneAccountListener listener = + new HandleMmiAccountSelectedCallback(context, input); + DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance( subscriptionAccountHandles, listener); dialogFragment.show(((Activity) context).getFragmentManager(), |