From 6a4ce1b6580f24b40c4901e6bc541c69385bf9f5 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 30 Oct 2020 17:45:28 -0400 Subject: [PATCH] Fix SMS role bug introduced for pre-Q devices. --- .../reminder/DefaultSmsReminder.java | 2 +- .../conversation/ConversationActivity.java | 2 +- .../preferences/SmsMmsPreferenceFragment.java | 2 +- .../thoughtcrime/securesms/util/SmsUtil.java | 29 ++++++------------- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/DefaultSmsReminder.java b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/DefaultSmsReminder.java index 55e44e7642..f002b4b7ae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/reminder/DefaultSmsReminder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/reminder/DefaultSmsReminder.java @@ -22,7 +22,7 @@ public class DefaultSmsReminder extends Reminder { @Override public void onClick(View v) { TextSecurePreferences.setPromptedDefaultSmsProvider(fragment.requireContext(), true); - SmsUtil.startActivityToRequestSmsRole(fragment, requestCode); + fragment.startActivityForResult(SmsUtil.getSmsRoleIntent(fragment.requireContext()), requestCode); } }; final OnClickListener dismissListener = new OnClickListener() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 42ea5b3cdc..64e858cf6d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -1129,7 +1129,7 @@ public class ConversationActivity extends PassphraseRequiredActivity @TargetApi(Build.VERSION_CODES.KITKAT) private void handleMakeDefaultSms() { - SmsUtil.startActivityToRequestSmsRole(this, SMS_DEFAULT); + startActivityForResult(SmsUtil.getSmsRoleIntent(this), SMS_DEFAULT); } private void handleRegisterForSignal() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java index f7e890cc4d..c5f477236d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java @@ -84,7 +84,7 @@ public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment { defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app)); defaultPreference.setOnPreferenceClickListener(preference -> { - SmsUtil.startActivityToRequestSmsRole(this, SMS_ROLE_REQUEST_CODE); + startActivityForResult(SmsUtil.getSmsRoleIntent(requireContext()), SMS_ROLE_REQUEST_CODE); return true; }); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SmsUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/SmsUtil.java index 5f9b5ae33d..a0a7d062c1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SmsUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SmsUtil.java @@ -1,41 +1,30 @@ package org.thoughtcrime.securesms.util; -import android.app.Activity; import android.app.role.RoleManager; +import android.content.Context; import android.content.Intent; import android.os.Build; import android.provider.Telephony; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; public final class SmsUtil { private SmsUtil() { } - public static void startActivityToRequestSmsRole(@NonNull Activity activity, int requestCode) { + /** + * Must be used with {@code startActivityForResult} + */ + public static @NonNull Intent getSmsRoleIntent(@NonNull Context context) { if (Build.VERSION.SDK_INT >= 29) { - RoleManager roleManager = ContextCompat.getSystemService(activity, RoleManager.class); - Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS); - activity.startActivityForResult(intent, requestCode); + RoleManager roleManager = ContextCompat.getSystemService(context, RoleManager.class); + return roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS); } else { Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); - intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, activity.getPackageName()); - activity.startActivity(intent); - } - } - - public static void startActivityToRequestSmsRole(@NonNull Fragment fragment, int requestCode) { - if (Build.VERSION.SDK_INT >= 29) { - RoleManager roleManager = ContextCompat.getSystemService(fragment.requireContext(), RoleManager.class); - Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS); - fragment.startActivityForResult(intent, requestCode); - } else { - Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); - intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, fragment.requireContext().getPackageName()); - fragment.startActivity(intent); + intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName()); + return intent; } } }