Merge "Fix issue of CS restriction notification incorrectly disappearing"
diff --git a/src/java/com/android/internal/telephony/CallFailCause.java b/src/java/com/android/internal/telephony/CallFailCause.java
index c597927..c0bece0 100644
--- a/src/java/com/android/internal/telephony/CallFailCause.java
+++ b/src/java/com/android/internal/telephony/CallFailCause.java
@@ -52,6 +52,7 @@
int ACM_LIMIT_EXCEEDED = 68;
int CALL_BARRED = 240;
int FDN_BLOCKED = 241;
+ int IMEI_NOT_ACCEPTED = 243;
// Stk Call Control
int DIAL_MODIFIED_TO_USSD = 244;
diff --git a/src/java/com/android/internal/telephony/CellBroadcastHandler.java b/src/java/com/android/internal/telephony/CellBroadcastHandler.java
index 5cb329a..3f2303e 100644
--- a/src/java/com/android/internal/telephony/CellBroadcastHandler.java
+++ b/src/java/com/android/internal/telephony/CellBroadcastHandler.java
@@ -19,13 +19,14 @@
import android.Manifest;
import android.app.Activity;
import android.app.AppOpsManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Message;
import android.os.UserHandle;
import android.provider.Telephony;
-import android.telephony.SubscriptionManager;
import android.telephony.SmsCbMessage;
+import android.telephony.SubscriptionManager;
/**
* Dispatch new Cell Broadcasts to receivers. Acquires a private wakelock until the broadcast
@@ -90,9 +91,22 @@
receiverPermission = Manifest.permission.RECEIVE_SMS;
appOp = AppOpsManager.OP_RECEIVE_SMS;
}
+ // explicitly send it to the default cell broadcast receiver only.
+ intent.setComponent(getDefaultCellBroadcastReceiverApp(mContext));
intent.putExtra("message", message);
SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhone.getPhoneId());
mContext.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, receiverPermission, appOp,
mReceiver, getHandler(), Activity.RESULT_OK, null, null);
}
+
+ /**
+ * Get the default cell broadcast receiver component name.
+ * @param context Device context
+ * @return Component name of the default cell broadcast receiver
+ */
+ public static ComponentName getDefaultCellBroadcastReceiverApp(Context context) {
+ String defaultCellBroadcastReceiver = context.getResources().getString(
+ com.android.internal.R.string.config_defaultCellBroadcastReceiverComponent);
+ return ComponentName.unflattenFromString(defaultCellBroadcastReceiver);
+ }
}
diff --git a/src/java/com/android/internal/telephony/GsmCdmaConnection.java b/src/java/com/android/internal/telephony/GsmCdmaConnection.java
index 1530ada..1e54c6b 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaConnection.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaConnection.java
@@ -26,16 +26,15 @@
import android.os.SystemClock;
import android.telephony.CarrierConfigManager;
import android.telephony.DisconnectCause;
-import android.telephony.Rlog;
import android.telephony.PhoneNumberUtils;
+import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.text.TextUtils;
import com.android.internal.telephony.cdma.CdmaCallWaitingNotification;
import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager;
-import com.android.internal.telephony.uicc.UiccCardApplication;
-import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
+import com.android.internal.telephony.uicc.UiccCardApplication;
/**
* {@hide}
@@ -447,6 +446,9 @@
case CallFailCause.FDN_BLOCKED:
return DisconnectCause.FDN_BLOCKED;
+ case CallFailCause.IMEI_NOT_ACCEPTED:
+ return DisconnectCause.IMEI_NOT_ACCEPTED;
+
case CallFailCause.UNOBTAINABLE_NUMBER:
return DisconnectCause.UNOBTAINABLE_NUMBER;
diff --git a/src/java/com/android/internal/telephony/cat/AppInterface.java b/src/java/com/android/internal/telephony/cat/AppInterface.java
index d48a82b..6c4eacc 100644
--- a/src/java/com/android/internal/telephony/cat/AppInterface.java
+++ b/src/java/com/android/internal/telephony/cat/AppInterface.java
@@ -16,6 +16,8 @@
package com.android.internal.telephony.cat;
+import android.content.ComponentName;
+
/**
* Interface for communication between STK App and CAT Telephony
*
@@ -48,6 +50,11 @@
// Permission required by STK command receiver
public static final String STK_PERMISSION = "android.permission.RECEIVE_STK_COMMANDS";
+ // Only forwards cat broadcast to the system default stk app
+ public static ComponentName getDefaultSTKApplication() {
+ return ComponentName.unflattenFromString("com.android.stk/.StkCmdReceiver");
+ }
+
/*
* Callback function from app to telephony to pass a result code and user's
* input back to the ICC.
diff --git a/src/java/com/android/internal/telephony/cat/CatService.java b/src/java/com/android/internal/telephony/cat/CatService.java
index b5776a1..5807d85 100644
--- a/src/java/com/android/internal/telephony/cat/CatService.java
+++ b/src/java/com/android/internal/telephony/cat/CatService.java
@@ -513,6 +513,7 @@
Intent intent = new Intent(AppInterface.CAT_CMD_ACTION);
intent.putExtra("STK CMD", cmdMsg);
intent.putExtra("SLOT_ID", mSlotId);
+ intent.setComponent(AppInterface.getDefaultSTKApplication());
CatLog.d(this, "Sending CmdMsg: " + cmdMsg+ " on slotid:" + mSlotId);
mContext.sendBroadcast(intent, AppInterface.STK_PERMISSION);
}
@@ -527,6 +528,7 @@
mCurrntCmd = mMenuCmd;
Intent intent = new Intent(AppInterface.CAT_SESSION_END_ACTION);
intent.putExtra("SLOT_ID", mSlotId);
+ intent.setComponent(AppInterface.getDefaultSTKApplication());
mContext.sendBroadcast(intent, AppInterface.STK_PERMISSION);
}
@@ -878,6 +880,7 @@
// This sends an intent with CARD_ABSENT (0 - false) /CARD_PRESENT (1 - true).
intent.putExtra(AppInterface.CARD_STATUS, cardPresent);
+ intent.setComponent(AppInterface.getDefaultSTKApplication());
CatLog.d(this, "Sending Card Status: "
+ cardState + " " + "cardPresent: " + cardPresent);
mContext.sendBroadcast(intent, AppInterface.STK_PERMISSION);
@@ -889,6 +892,7 @@
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
intent.putExtra(AppInterface.ALPHA_STRING, alphaString);
intent.putExtra("SLOT_ID", mSlotId);
+ intent.setComponent(AppInterface.getDefaultSTKApplication());
mContext.sendBroadcast(intent, AppInterface.STK_PERMISSION);
}
diff --git a/src/java/com/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler.java b/src/java/com/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler.java
index 81413c6..50fa566 100644
--- a/src/java/com/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler.java
+++ b/src/java/com/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler.java
@@ -30,8 +30,8 @@
import android.telephony.cdma.CdmaSmsCbProgramData;
import android.telephony.cdma.CdmaSmsCbProgramResults;
+import com.android.internal.telephony.CellBroadcastHandler;
import com.android.internal.telephony.CommandsInterface;
-import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.WakeLockStateMachine;
import com.android.internal.telephony.cdma.sms.BearerData;
import com.android.internal.telephony.cdma.sms.CdmaSmsAddress;
@@ -103,6 +103,7 @@
}
Intent intent = new Intent(Intents.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION);
+ intent.setComponent(CellBroadcastHandler.getDefaultCellBroadcastReceiverApp(mContext));
intent.putExtra("sender", sms.getOriginatingAddress());
intent.putParcelableArrayListExtra("program_data", programDataList);
SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhone.getPhoneId());