Finish KitKat compatibility details.

1) The system does actually enforce having a BROADCAST_SMS
   permission on the SMS receiver. Break out the "delivered"
   parts of this into a separate Receiver, so the permission
   won't trip up GB devices.

2) The system does actually enforce having "quick response"
   intents.  Add a no-op for now.

3) Add a "make default" prompt.

4) Update settings to reflect what's going on in KitKat.
This commit is contained in:
Moxie Marlinspike
2013-12-02 12:31:59 -08:00
parent e81756f443
commit b0216e1494
10 changed files with 145 additions and 23 deletions

View File

@@ -22,13 +22,16 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.provider.ContactsContract;
import android.provider.Telephony;
import android.util.Log;
import android.widget.Toast;
@@ -42,6 +45,7 @@ import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.MemoryCleaner;
import org.thoughtcrime.securesms.util.Trimmer;
import org.thoughtcrime.securesms.util.Util;
/**
* The Activity for application preference display and management.
@@ -65,7 +69,9 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
public static final String LED_BLINK_PREF = "pref_led_blink";
public static final String LED_BLINK_PREF_CUSTOM = "pref_led_blink_custom";
public static final String IDENTITY_PREF = "pref_choose_identity";
public static final String ALL_SMS_PREF = "pref_all_sms";
public static final String ALL_MMS_PERF = "pref_all_mms";
public static final String KITKAT_DEFAULT_PREF = "pref_set_default";
public static final String PASSPHRASE_TIMEOUT_INTERVAL_PREF = "pref_timeout_interval";
public static final String PASSPHRASE_TIMEOUT_PREF = "pref_timeout_passphrase";
public static final String AUTO_KEY_EXCHANGE_PREF = "pref_auto_complete_key_exchange";
@@ -110,6 +116,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
addPreferencesFromResource(R.xml.preferences);
initializeIdentitySelection();
initializePlatformSpecificOptions();
this.findPreference(CHANGE_PASSPHRASE_PREF)
.setOnPreferenceClickListener(new ChangePassphraseClickListener());
@@ -176,6 +183,27 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
return false;
}
private void initializePlatformSpecificOptions() {
PreferenceGroup generalCategory = (PreferenceGroup)findPreference("general_category");
Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
generalCategory.removePreference(findPreference(ALL_SMS_PREF));
generalCategory.removePreference(findPreference(ALL_MMS_PERF));
if (Util.isDefaultSmsProvider(this)) {
generalCategory.removePreference(defaultPreference);
} else {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getPackageName());
defaultPreference.setIntent(intent);
}
} else {
generalCategory.removePreference(defaultPreference);
}
}
private void initializeIdentitySelection() {
ContactIdentityManager identity = ContactIdentityManager.getInstance(this);