summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVenkatraman Nerellapalli <venkataraman.nerellapalli@codeaurora.org>2016-01-09 17:20:00 +0530
committerSteve Kondik <steve@cyngn.com>2016-07-01 05:04:56 -0700
commit69e674601bfb80fc1102c7e5d0234ae80f58beac (patch)
tree8b6aebaa5b94b22143e288e1503f5e27718c25ca /src
parentf79f08e7d5fd82c28eb8e2828315d100c0a79397 (diff)
downloadpackages_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.java50
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();