Merge "The main menu must not be set as a pending activity instance"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ff487ab..1beb3ae 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -22,6 +22,8 @@
<original-package android:name="com.android.stk" />
+ <protected-broadcast android:name="com.android.stk.DIALOG_ALARM_TIMEOUT" />
+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.RECEIVE_STK_COMMANDS" />
@@ -30,7 +32,9 @@
android:label="@string/app_name"
android:clearTaskOnLaunch="true"
android:process="com.android.phone"
- android:taskAffinity="android.task.stk">
+ android:taskAffinity="android.task.stk"
+ android:defaultToDeviceProtectedStorage="true"
+ android:directBootAware="true">
<activity android:name="StkMain"
android:theme="@android:style/Theme.NoDisplay"
@@ -92,7 +96,8 @@
<activity android:name="ToneDialog"
android:exported="false"
- android:theme="@android:style/Theme.DeviceDefault.Dialog">
+ android:theme="@android:style/Theme.DeviceDefault.Dialog"
+ android:taskAffinity="android.task.stk.StkLauncherActivity">
</activity>
<receiver android:name="com.android.stk.StkCmdReceiver">
diff --git a/res/drawable-hdpi/ic_launcher_sim_toolkit.png b/res/drawable-hdpi/ic_launcher_sim_toolkit.png
index ce4ac43..51d6688 100644
--- a/res/drawable-hdpi/ic_launcher_sim_toolkit.png
+++ b/res/drawable-hdpi/ic_launcher_sim_toolkit.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_launcher_sim_toolkit.png b/res/drawable-mdpi/ic_launcher_sim_toolkit.png
index 0dfec74..913ab12 100755
--- a/res/drawable-mdpi/ic_launcher_sim_toolkit.png
+++ b/res/drawable-mdpi/ic_launcher_sim_toolkit.png
Binary files differ
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 25f760b..795c6b9 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -23,7 +23,7 @@
<string name="service_name" msgid="6860303747999592491">"ಸೇವೆಯ ಹೆಸರು"</string>
<string name="stk_no_service" msgid="5427773116839809131">"ಯಾವುದೇ ಸೇವೆ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="button_ok" msgid="5760722312558549555">"ಸರಿ"</string>
- <string name="button_cancel" msgid="1997847915560800261">"ರದ್ದುಮಾಡು"</string>
+ <string name="button_cancel" msgid="1997847915560800261">"ರದ್ದುಮಾಡಿ"</string>
<string name="button_yes" msgid="624420260648337203">"ಹೌದು"</string>
<string name="button_no" msgid="1824959157582605627">"ಇಲ್ಲ"</string>
<string name="alphabet" msgid="1583185545938805861">"ವರ್ಣಮಾಲೆಗಳು"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index 6314419..8853d46 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -19,18 +19,18 @@
<string name="app_name" msgid="8396461461738434341">"SIM တူးလ်ကစ်"</string>
<string name="menu_end_session" msgid="7368541737750982217">"သတ်မှတ်ကဏ္ဏကို ပြီးဆုံးမည်"</string>
<string name="help" msgid="9209980881219397319">"အကူအညီ"</string>
- <string name="menu_back" msgid="301227740977453364">"နောက်ပြန်"</string>
+ <string name="menu_back" msgid="301227740977453364">"နောက်သို့"</string>
<string name="service_name" msgid="6860303747999592491">"ဝန်ဆောင်မှုအမည်"</string>
<string name="stk_no_service" msgid="5427773116839809131">"ဆက်သွယ်ချိတ်ဆက်ရန် ဝန်ဆောင်မှု တစ်ခုမှမရှိပါ"</string>
<string name="button_ok" msgid="5760722312558549555">"အိုကေ"</string>
- <string name="button_cancel" msgid="1997847915560800261">"မလုပ်တော့ပါ"</string>
- <string name="button_yes" msgid="624420260648337203">"မှန်ပါသည်"</string>
+ <string name="button_cancel" msgid="1997847915560800261">"မလုပ်တော့"</string>
+ <string name="button_yes" msgid="624420260648337203">"Yes"</string>
<string name="button_no" msgid="1824959157582605627">"No"</string>
<string name="alphabet" msgid="1583185545938805861">"အက္ခရာများ"</string>
<string name="digits" msgid="1746796679021682388">"ဂဏန်းများ (0-9, *, #, +)"</string>
<string name="default_call_setup_msg" msgid="7960194995759849940">"ခေါ်ဆိုနေပါသည်"</string>
<string name="default_setup_call_msg" msgid="6126904475461162162">"ခေါ်ဆိုရန် သတ်မှတ်ပြင်ဆင်ပြီး"</string>
- <string name="stk_app_state" msgid="18582277302584082">"အပ်ပလီကေးရှင်းအနေအထား"</string>
+ <string name="stk_app_state" msgid="18582277302584082">"အပလီကေးရှင်းအနေအထား"</string>
<string name="enable_app" msgid="3701224550936728203">"ဖွင့်ထားသည်"</string>
<string name="disable_app" msgid="6725081975611415214">"သုံးမရအောင် ပိတ်ထားခြင်း"</string>
<string name="stk_dialog_title" msgid="6954825385456886726">"SIM တူးလ်ကစ်"</string>
diff --git a/src/com/android/stk/StkAppService.java b/src/com/android/stk/StkAppService.java
index c2c8874..9eec59e 100755
--- a/src/com/android/stk/StkAppService.java
+++ b/src/com/android/stk/StkAppService.java
@@ -313,6 +313,7 @@
//If all StkServices are not available, stop itself and uninstall apk.
for (i = PhoneConstants.SIM_ID_1; i < mSimCount; i++) {
if (i != slotId
+ && (mStkService[i] != null)
&& (mStkContext[i].mStkServiceState == STATE_UNKNOWN
|| mStkContext[i].mStkServiceState == STATE_EXIST)) {
break;
@@ -797,14 +798,17 @@
// returns true if any Stk related activity already has focus on the screen
private boolean isTopOfStack() {
- ActivityManager mAcivityManager = (ActivityManager) mContext
+ ActivityManager mActivityManager = (ActivityManager) mContext
.getSystemService(ACTIVITY_SERVICE);
- String currentPackageName = mAcivityManager.getRunningTasks(1).get(0).topActivity
- .getPackageName();
+ String currentPackageName = null;
+ List<RunningTaskInfo> tasks = mActivityManager.getRunningTasks(1);
+ if (tasks == null || tasks.get(0).topActivity == null) {
+ return false;
+ }
+ currentPackageName = tasks.get(0).topActivity.getPackageName();
if (null != currentPackageName) {
return currentPackageName.equals(PACKAGE_NAME);
}
-
return false;
}
diff --git a/src/com/android/stk/StkDialogActivity.java b/src/com/android/stk/StkDialogActivity.java
index 0d63043..78e1a2e 100755
--- a/src/com/android/stk/StkDialogActivity.java
+++ b/src/com/android/stk/StkDialogActivity.java
@@ -70,6 +70,15 @@
super.onCreate(icicle);
CatLog.d(LOG_TAG, "onCreate, sim id: " + mSlotId);
+
+ // appService can be null if this activity is automatically recreated by the system
+ // with the saved instance state right after the phone process is killed.
+ if (appService == null) {
+ CatLog.d(LOG_TAG, "onCreate - appService is null");
+ finish();
+ return;
+ }
+
// New Dialog is created - set to no response sent
mIsResponseSent = false;
@@ -229,6 +238,9 @@
super.onDestroy();
CatLog.d(LOG_TAG, "onDestroy - mIsResponseSent[" + mIsResponseSent +
"], sim id: " + mSlotId);
+ if (appService == null) {
+ return;
+ }
// if dialog activity is finished by stkappservice
// when receiving OP_LAUNCH_APP from the other SIM, we can not send TR here
// , since the dialog cmd is waiting user to process.
diff --git a/src/com/android/stk/StkInputActivity.java b/src/com/android/stk/StkInputActivity.java
old mode 100644
new mode 100755
index 4dbad00..96b7dca
--- a/src/com/android/stk/StkInputActivity.java
+++ b/src/com/android/stk/StkInputActivity.java
@@ -134,6 +134,14 @@
CatLog.d(LOG_TAG, "onCreate - mIsResponseSent[" + mIsResponseSent + "]");
+ // appService can be null if this activity is automatically recreated by the system
+ // with the saved instance state right after the phone process is killed.
+ if (appService == null) {
+ CatLog.d(LOG_TAG, "onCreate - appService is null");
+ finish();
+ return;
+ }
+
// Set the layout for this activity.
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.stk_input);
@@ -201,6 +209,9 @@
super.onDestroy();
CatLog.d(LOG_TAG, "onDestroy - before Send End Session mIsResponseSent[" +
mIsResponseSent + " , " + mSlotId + "]");
+ if (appService == null) {
+ return;
+ }
//If the input activity is finished by stkappservice
//when receiving OP_LAUNCH_APP from the other SIM, we can not send TR here
//, since the input cmd is waiting user to process.
diff --git a/src/com/android/stk/StkMenuActivity.java b/src/com/android/stk/StkMenuActivity.java
index fbe8dbc..42cd60a 100755
--- a/src/com/android/stk/StkMenuActivity.java
+++ b/src/com/android/stk/StkMenuActivity.java
@@ -110,6 +110,15 @@
mContext = getBaseContext();
mAcceptUsersInput = true;
getListView().setOnCreateContextMenuListener(this);
+
+ // appService can be null if this activity is automatically recreated by the system
+ // with the saved instance state right after the phone process is killed.
+ if (appService == null) {
+ CatLog.d(LOG_TAG, "onCreate - appService is null");
+ finish();
+ return;
+ }
+
initFromIntent(getIntent());
}
@@ -274,6 +283,9 @@
getListView().setOnCreateContextMenuListener(null);
super.onDestroy();
CatLog.d(LOG_TAG, "onDestroy" + "," + mState);
+ if (appService == null) {
+ return;
+ }
//isMenuPending: if input act is finish by stkappservice when OP_LAUNCH_APP again,
//we can not send TR here, since the input cmd is waiting user to process.
if (mState == STATE_SECONDARY && !mIsResponseSent && !appService.isMenuPending(mSlotId)) {