diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9098ce86b2..94b9bd364f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -27,6 +27,10 @@
You are not registered with the push service...
Updating directory
Updating push directory...
+ SMS Enabled
+ Touch to change your default SMS app
+ SMS Disabled
+ Touch to make TextSecure your default SMS app
diff --git a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
index df271f6b3e..0091adbaa3 100644
--- a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
+++ b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
@@ -38,6 +38,7 @@ import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference;
import android.provider.ContactsContract;
+import android.provider.Settings;
import android.provider.Telephony;
import android.text.TextUtils;
import android.util.Log;
@@ -101,7 +102,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
addPreferencesFromResource(R.xml.preferences);
initializeIdentitySelection();
- initializePlatformSpecificOptions();
initializeSmsFallbackOption();
initializePushMessagingToggle();
@@ -142,6 +142,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
super.onResume();
dynamicTheme.onResume(this);
dynamicLanguage.onResume(this);
+
+ initializePlatformSpecificOptions();
}
@Override
@@ -187,21 +189,26 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
private void initializePlatformSpecificOptions() {
PreferenceGroup generalCategory = (PreferenceGroup) findPreference("general_category");
Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF);
+ Preference allSmsPreference = findPreference(TextSecurePreferences.ALL_SMS_PREF);
+ Preference allMmsPreference = findPreference(TextSecurePreferences.ALL_MMS_PREF);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- generalCategory.removePreference(findPreference(TextSecurePreferences.ALL_SMS_PREF));
- generalCategory.removePreference(findPreference(TextSecurePreferences.ALL_MMS_PREF));
+ if (allSmsPreference != null) generalCategory.removePreference(allSmsPreference);
+ if (allMmsPreference != null) generalCategory.removePreference(allMmsPreference);
if (Util.isDefaultSmsProvider(this)) {
- generalCategory.removePreference(defaultPreference);
+ defaultPreference.setIntent(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
+ defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_enabled));
+ defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_change_your_default_sms_app));
} else {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
-
defaultPreference.setIntent(intent);
+ defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_disabled));
+ defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_textsecure_your_default_sms_app));
}
} else {
- generalCategory.removePreference(defaultPreference);
+ if (defaultPreference != null) generalCategory.removePreference(defaultPreference);
}
}
diff --git a/src/org/thoughtcrime/securesms/service/MmsListener.java b/src/org/thoughtcrime/securesms/service/MmsListener.java
index 2de7ed702c..4ee08d7f76 100644
--- a/src/org/thoughtcrime/securesms/service/MmsListener.java
+++ b/src/org/thoughtcrime/securesms/service/MmsListener.java
@@ -50,8 +50,7 @@ public class MmsListener extends BroadcastReceiver {
return false;
}
- if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT &&
- TextSecurePreferences.isSmsFallbackEnabled(context)) ||
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT &&
TextSecurePreferences.isInterceptAllMmsEnabled(context))
{
return true;
@@ -76,7 +75,10 @@ public class MmsListener extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.w("MmsListener", "Got MMS broadcast..." + intent.getAction());
- if (isRelevant(context, intent)) {
+ if (Telephony.Sms.Intents.WAP_PUSH_DELIVER_ACTION.equals(intent.getAction()) ||
+ (Telephony.Sms.Intents.WAP_PUSH_RECEIVED_ACTION.equals(intent.getAction()) &&
+ isRelevant(context, intent)))
+ {
Log.w("MmsListener", "Relevant!");
intent.setAction(SendReceiveService.RECEIVE_MMS_ACTION);
intent.putExtra("ResultCode", this.getResultCode());
diff --git a/src/org/thoughtcrime/securesms/service/SmsListener.java b/src/org/thoughtcrime/securesms/service/SmsListener.java
index 5f0c65b435..cc21f11050 100644
--- a/src/org/thoughtcrime/securesms/service/SmsListener.java
+++ b/src/org/thoughtcrime/securesms/service/SmsListener.java
@@ -19,25 +19,23 @@ package org.thoughtcrime.securesms.service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
import android.os.Build;
-import android.preference.PreferenceManager;
+import android.os.Bundle;
+import android.provider.Telephony;
import android.telephony.SmsMessage;
import android.util.Log;
-import org.thoughtcrime.securesms.ApplicationPreferencesActivity;
import org.thoughtcrime.securesms.protocol.WirePrefix;
import org.thoughtcrime.securesms.sms.IncomingTextMessage;
-import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
+import org.thoughtcrime.securesms.util.Util;
import java.util.ArrayList;
public class SmsListener extends BroadcastReceiver {
- private static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
- private static final String SMS_DELIVERED_ACTION = "android.provider.Telephony.SMS_DELIVER";
+ private static final String SMS_RECEIVED_ACTION = Telephony.Sms.Intents.SMS_RECEIVED_ACTION;
+ private static final String SMS_DELIVERED_ACTION = Telephony.Sms.Intents.SMS_DELIVER_ACTION;
private boolean isExemption(SmsMessage message, String messageBody) {
@@ -103,6 +101,9 @@ public class SmsListener extends BroadcastReceiver {
if (!ApplicationMigrationService.isDatabaseImported(context))
return false;
+ if (isChallenge(context, intent))
+ return false;
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT &&
SMS_RECEIVED_ACTION.equals(intent.getAction()) &&
Util.isDefaultSmsProvider(context))
@@ -110,8 +111,7 @@ public class SmsListener extends BroadcastReceiver {
return false;
}
- if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT &&
- TextSecurePreferences.isSmsFallbackEnabled(context)) ||
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT &&
TextSecurePreferences.isInterceptAllSmsEnabled(context))
{
return true;
@@ -154,9 +154,8 @@ public class SmsListener extends BroadcastReceiver {
context.sendBroadcast(challengeIntent);
abortBroadcast();
- } else if ((intent.getAction().equals(SMS_RECEIVED_ACTION) ||
- intent.getAction().equals(SMS_DELIVERED_ACTION)) &&
- isRelevant(context, intent))
+ } else if ((intent.getAction().equals(SMS_DELIVERED_ACTION)) ||
+ (intent.getAction().equals(SMS_RECEIVED_ACTION)) && isRelevant(context, intent))
{
Intent receivedIntent = new Intent(context, SendReceiveService.class);
receivedIntent.setAction(SendReceiveService.RECEIVE_SMS_ACTION);