Fix SMS role bug introduced for pre-Q devices.
This commit is contained in:
parent
f84595e1e8
commit
6a4ce1b658
4 changed files with 12 additions and 23 deletions
|
@ -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() {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue