diff options
author | Venkatraman Nerellapalli <venkataraman.nerellapalli@codeaurora.org> | 2016-01-09 17:20:00 +0530 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-07-01 05:04:56 -0700 |
commit | 69e674601bfb80fc1102c7e5d0234ae80f58beac (patch) | |
tree | 8b6aebaa5b94b22143e288e1503f5e27718c25ca /src | |
parent | f79f08e7d5fd82c28eb8e2828315d100c0a79397 (diff) | |
download | packages_apps_Settings-69e674601bfb80fc1102c7e5d0234ae80f58beac.zip packages_apps_Settings-69e674601bfb80fc1102c7e5d0234ae80f58beac.tar.gz packages_apps_Settings-69e674601bfb80fc1102c7e5d0234ae80f58beac.tar.bz2 |
Telephony(MSIM): Fix ANR on SIM deactivation
Dismiss dialog box on confirmation.
SIM activation & deactivation in background thread.
Change-Id: I0268a710f35e30b2abec3dd671942b52fc0e0b46
CRs-Fixed: 957308
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/sim/SimSettings.java | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java index 20a401e..d85a509 100644 --- a/src/com/android/settings/sim/SimSettings.java +++ b/src/com/android/settings/sim/SimSettings.java @@ -28,6 +28,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.graphics.drawable.BitmapDrawable; +import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -689,26 +690,44 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable if (!mSwitch.isEnabled()) { return; } - int result = -1; + new SimEnablerDisabler().execute(); + } + + private class SimEnablerDisabler extends AsyncTask<Void, Void, Integer> { + int newProvisionedState = NOT_PROVISIONED; - mCmdInProgress = true; - showProgressDialog(); - setEnabled(false); - try { - if (mIsChecked) { - result = mExtTelephony.activateUiccCard(mSir.getSimSlotIndex()); - newProvisionedState = PROVISIONED; - } else { - result = mExtTelephony.deactivateUiccCard(mSir.getSimSlotIndex()); + @Override + protected void onPreExecute() { + super.onPreExecute(); + mCmdInProgress = true; + showProgressDialog(); + setEnabled(false); + } + + @Override + protected Integer doInBackground(Void... params) { + int result = -1; + newProvisionedState = NOT_PROVISIONED; + try { + if (mIsChecked) { + result = mExtTelephony.activateUiccCard(mSir.getSimSlotIndex()); + newProvisionedState = PROVISIONED; + } else { + result = mExtTelephony.deactivateUiccCard(mSir.getSimSlotIndex()); + } + } catch (RemoteException ex) { + loge("Activate sub failed " + result + " phoneId " + mSir.getSimSlotIndex()); + } catch (NullPointerException ex) { + loge("Failed to activate sub Exception: " + ex); } - } catch (RemoteException ex) { - loge("Activate sub failed " + result + " phoneId " + mSir.getSimSlotIndex()); - } catch (NullPointerException ex) { - loge("Failed to activate sub Exception: " + ex); + return result; } - processSetUiccDone(result, newProvisionedState); + @Override + protected void onPostExecute(Integer result) { + processSetUiccDone(result.intValue(), newProvisionedState); + } } private void processSetUiccDone(int result, int newProvisionedState) { @@ -819,6 +838,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable .OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { + dismissDialog(sAlertDialog); sendUiccProvisioningRequest(); } else if (which == DialogInterface.BUTTON_NEGATIVE) { update(); |