Fix SMS role bug introduced for pre-Q devices.

This commit is contained in:
Cody Henthorne 2020-10-30 17:45:28 -04:00
parent f84595e1e8
commit 6a4ce1b658
4 changed files with 12 additions and 23 deletions

View file

@ -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() {

View file

@ -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() {

View file

@ -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;
});
}

View file

@ -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;
}
}
}