aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2016-06-20 11:13:54 -0700
committerMichael Bestas <mikeioannina@gmail.com>2017-01-07 01:41:43 +0200
commit0fff85dc07663a12366b55dda6b724f6d8aa4ce1 (patch)
tree9e0a64f3e267168e2537bf7485f7b83f44fdf96d
parent02efbec1875165fc747d6d86eeccc6e7f02cc7fd (diff)
downloadandroid_frameworks_opt_telephony-0fff85dc07663a12366b55dda6b724f6d8aa4ce1.tar.gz
android_frameworks_opt_telephony-0fff85dc07663a12366b55dda6b724f6d8aa4ce1.tar.bz2
android_frameworks_opt_telephony-0fff85dc07663a12366b55dda6b724f6d8aa4ce1.zip
Telephony: handle 3rd party sms apps + 'always ask'
3rd party SMS apps may not be able to handle our always ask behavior, so they may get stuck in a bad state. An example of this is Hangouts, which just ends up never sending messages when always ask is selected. TIcket: CYNGNOS-3068 Change-Id: I8a0f1f6bf7a5010438e40eb0be9aa178d2141f3c Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r--src/java/com/android/internal/telephony/SmsApplication.java12
-rwxr-xr-xsrc/java/com/android/internal/telephony/UiccSmsController.java10
2 files changed, 21 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/SmsApplication.java b/src/java/com/android/internal/telephony/SmsApplication.java
index bf90350ef..aac4f50dd 100644
--- a/src/java/com/android/internal/telephony/SmsApplication.java
+++ b/src/java/com/android/internal/telephony/SmsApplication.java
@@ -41,6 +41,7 @@ import android.provider.Telephony.Sms.Intents;
import android.telephony.Rlog;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
+import android.text.TextUtils;
import android.util.Log;
import com.android.internal.content.PackageMonitor;
@@ -62,6 +63,7 @@ public final class SmsApplication {
private static final String BLUETOOTH_PACKAGE_NAME = "com.android.bluetooth";
private static final String MMS_SERVICE_PACKAGE_NAME = "com.android.mms.service";
private static final String TELEPHONY_PROVIDER_PACKAGE_NAME = "com.android.providers.telephony";
+ private static final String DEFAULT_SYSTEM_MMS_PACKAGE_NAME = "com.android.messaging";
private static final String SCHEME_SMS = "sms";
private static final String SCHEME_SMSTO = "smsto";
@@ -914,6 +916,16 @@ public final class SmsApplication {
return false;
}
+ /**
+ * @hide
+ */
+ public static boolean canSmsAppHandleAlwaysAsk(Context context) {
+ final ComponentName defaultMmsApplication = SmsApplication.getDefaultMmsApplication(context,
+ false);
+ return TextUtils.equals(DEFAULT_SYSTEM_MMS_PACKAGE_NAME,
+ defaultMmsApplication.getPackageName());
+ }
+
private static String getDefaultSmsApplicationPackageName(Context context) {
final ComponentName component = getDefaultSmsApplication(context, false);
if (component != null) {
diff --git a/src/java/com/android/internal/telephony/UiccSmsController.java b/src/java/com/android/internal/telephony/UiccSmsController.java
index 740a4d927..3f30addac 100755
--- a/src/java/com/android/internal/telephony/UiccSmsController.java
+++ b/src/java/com/android/internal/telephony/UiccSmsController.java
@@ -292,6 +292,14 @@ public class UiccSmsController extends ISms.Stub {
@Override
public boolean isSmsSimPickActivityNeeded(int subId) {
final Context context = ActivityThread.currentApplication().getApplicationContext();
+
+ boolean canCurrentAppHandleAlwaysAsk = SmsApplication.canSmsAppHandleAlwaysAsk(context);
+ if (!isSMSPromptEnabled() && canCurrentAppHandleAlwaysAsk) {
+ Rlog.d(LOG_TAG, "isSmsSimPickActivityNeeded: false, sms prompt disabled.");
+ // user knows best
+ return false;
+ }
+
TelephonyManager telephonyManager =
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
List<SubscriptionInfo> subInfoList;
@@ -319,7 +327,7 @@ public class UiccSmsController extends ISms.Stub {
}
}
- return false;
+ return !canCurrentAppHandleAlwaysAsk;
}
@Override