diff options
| author | Roman Birg <roman@cyngn.com> | 2016-06-20 11:13:54 -0700 |
|---|---|---|
| committer | Roman Birg <roman@cyngn.com> | 2016-06-20 14:13:22 -0700 |
| commit | 3718ef2d361bcfdce11546b734e740dbe55a7a51 (patch) | |
| tree | f1f4f7520551136660e78d968d92c391e683cb83 /src | |
| parent | a94ae667a6cefaef2f4c87787dafabdd5458f047 (diff) | |
| download | android_frameworks_opt_telephony-3718ef2d361bcfdce11546b734e740dbe55a7a51.tar.gz android_frameworks_opt_telephony-3718ef2d361bcfdce11546b734e740dbe55a7a51.tar.bz2 android_frameworks_opt_telephony-3718ef2d361bcfdce11546b734e740dbe55a7a51.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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/java/com/android/internal/telephony/SmsApplication.java | 12 | ||||
| -rw-r--r-- | src/java/com/android/internal/telephony/UiccSmsController.java | 7 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/SmsApplication.java b/src/java/com/android/internal/telephony/SmsApplication.java index 5a9539424..b269ed217 100644 --- a/src/java/com/android/internal/telephony/SmsApplication.java +++ b/src/java/com/android/internal/telephony/SmsApplication.java @@ -38,6 +38,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; @@ -57,6 +58,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"; @@ -737,6 +739,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 7d17d441b..f9777d329 100644 --- a/src/java/com/android/internal/telephony/UiccSmsController.java +++ b/src/java/com/android/internal/telephony/UiccSmsController.java @@ -291,13 +291,14 @@ public class UiccSmsController extends ISms.Stub { @Override public boolean isSmsSimPickActivityNeeded(int subId) { - if (!isSMSPromptEnabled()) { + 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; } - final Context context = ActivityThread.currentApplication().getApplicationContext(); TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); List<SubscriptionInfo> subInfoList; @@ -331,7 +332,7 @@ public class UiccSmsController extends ISms.Stub { } } - return false; + return !canCurrentAppHandleAlwaysAsk; } @Override |
