mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 16:08:33 +00:00
Fix SMS role request for Q+.
This commit is contained in:
parent
d36ec9af47
commit
39cebfbb4e
@ -1,11 +1,12 @@
|
|||||||
package org.thoughtcrime.securesms.components.reminder;
|
package org.thoughtcrime.securesms.components.reminder;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Build.VERSION_CODES;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.util.SmsUtil;
|
import org.thoughtcrime.securesms.util.SmsUtil;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
@ -13,22 +14,21 @@ import org.thoughtcrime.securesms.util.Util;
|
|||||||
|
|
||||||
public class DefaultSmsReminder extends Reminder {
|
public class DefaultSmsReminder extends Reminder {
|
||||||
|
|
||||||
@TargetApi(VERSION_CODES.KITKAT)
|
public DefaultSmsReminder(@NonNull Fragment fragment, short requestCode) {
|
||||||
public DefaultSmsReminder(final Context context) {
|
super(fragment.getString(R.string.reminder_header_sms_default_title),
|
||||||
super(context.getString(R.string.reminder_header_sms_default_title),
|
fragment.getString(R.string.reminder_header_sms_default_text));
|
||||||
context.getString(R.string.reminder_header_sms_default_text));
|
|
||||||
|
|
||||||
final OnClickListener okListener = new OnClickListener() {
|
final OnClickListener okListener = new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
TextSecurePreferences.setPromptedDefaultSmsProvider(context, true);
|
TextSecurePreferences.setPromptedDefaultSmsProvider(fragment.requireContext(), true);
|
||||||
context.startActivity(SmsUtil.getSmsRoleIntent(context));
|
SmsUtil.startActivityToRequestSmsRole(fragment, requestCode);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
final OnClickListener dismissListener = new OnClickListener() {
|
final OnClickListener dismissListener = new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
TextSecurePreferences.setPromptedDefaultSmsProvider(context, true);
|
TextSecurePreferences.setPromptedDefaultSmsProvider(fragment.requireContext(), true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
setOkListener(okListener);
|
setOkListener(okListener);
|
||||||
|
@ -39,7 +39,6 @@ import android.os.Bundle;
|
|||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.provider.Browser;
|
import android.provider.Browser;
|
||||||
import android.provider.ContactsContract;
|
import android.provider.ContactsContract;
|
||||||
import android.provider.Telephony;
|
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
@ -1130,7 +1129,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||||
private void handleMakeDefaultSms() {
|
private void handleMakeDefaultSms() {
|
||||||
startActivityForResult(SmsUtil.getSmsRoleIntent(this), SMS_DEFAULT);
|
SmsUtil.startActivityToRequestSmsRole(this, SMS_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleRegisterForSignal() {
|
private void handleRegisterForSignal() {
|
||||||
|
@ -54,14 +54,12 @@ import androidx.appcompat.view.ActionMode;
|
|||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.appcompat.widget.TooltipCompat;
|
import androidx.appcompat.widget.TooltipCompat;
|
||||||
import androidx.core.content.res.ResourcesCompat;
|
import androidx.core.content.res.ResourcesCompat;
|
||||||
import androidx.core.view.ViewCompat;
|
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
import androidx.lifecycle.ProcessLifecycleOwner;
|
import androidx.lifecycle.ProcessLifecycleOwner;
|
||||||
import androidx.lifecycle.ViewModelProviders;
|
import androidx.lifecycle.ViewModelProviders;
|
||||||
import androidx.paging.PagedList;
|
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
@ -149,6 +147,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
|||||||
MegaphoneActionController
|
MegaphoneActionController
|
||||||
{
|
{
|
||||||
public static final short MESSAGE_REQUESTS_REQUEST_CODE_CREATE_NAME = 32562;
|
public static final short MESSAGE_REQUESTS_REQUEST_CODE_CREATE_NAME = 32562;
|
||||||
|
public static final short SMS_ROLE_REQUEST_CODE = 32563;
|
||||||
|
|
||||||
private static final String TAG = Log.tag(ConversationListFragment.class);
|
private static final String TAG = Log.tag(ConversationListFragment.class);
|
||||||
|
|
||||||
@ -590,7 +589,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
|||||||
} else if (OutdatedBuildReminder.isEligible()) {
|
} else if (OutdatedBuildReminder.isEligible()) {
|
||||||
return Optional.of(new OutdatedBuildReminder(context));
|
return Optional.of(new OutdatedBuildReminder(context));
|
||||||
} else if (DefaultSmsReminder.isEligible(context)) {
|
} else if (DefaultSmsReminder.isEligible(context)) {
|
||||||
return Optional.of(new DefaultSmsReminder(context));
|
return Optional.of(new DefaultSmsReminder(this, SMS_ROLE_REQUEST_CODE));
|
||||||
} else if (Util.isDefaultSmsProvider(context) && SystemSmsImportReminder.isEligible(context)) {
|
} else if (Util.isDefaultSmsProvider(context) && SystemSmsImportReminder.isEligible(context)) {
|
||||||
return Optional.of((new SystemSmsImportReminder(context)));
|
return Optional.of((new SystemSmsImportReminder(context)));
|
||||||
} else if (PushRegistrationReminder.isEligible(context)) {
|
} else if (PushRegistrationReminder.isEligible(context)) {
|
||||||
|
@ -21,8 +21,9 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
|||||||
import org.thoughtcrime.securesms.util.Util;
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
|
|
||||||
public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment {
|
public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment {
|
||||||
private static final String KITKAT_DEFAULT_PREF = "pref_set_default";
|
private static final String KITKAT_DEFAULT_PREF = "pref_set_default";
|
||||||
private static final String MMS_PREF = "pref_mms_preferences";
|
private static final String MMS_PREF = "pref_mms_preferences";
|
||||||
|
private static final short SMS_ROLE_REQUEST_CODE = 1234;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle paramBundle) {
|
public void onCreate(Bundle paramBundle) {
|
||||||
@ -68,10 +69,10 @@ public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initializeDefaultPreference() {
|
private void initializeDefaultPreference() {
|
||||||
if (VERSION.SDK_INT < VERSION_CODES.KITKAT) return;
|
|
||||||
|
|
||||||
Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF);
|
Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF);
|
||||||
if (Util.isDefaultSmsProvider(getActivity())) {
|
if (Util.isDefaultSmsProvider(getActivity())) {
|
||||||
|
defaultPreference.setOnPreferenceClickListener(null);
|
||||||
|
|
||||||
if (VERSION.SDK_INT < VERSION_CODES.M) defaultPreference.setIntent(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
|
if (VERSION.SDK_INT < VERSION_CODES.M) defaultPreference.setIntent(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
|
||||||
if (VERSION.SDK_INT < VERSION_CODES.N) defaultPreference.setIntent(new Intent(Settings.ACTION_SETTINGS));
|
if (VERSION.SDK_INT < VERSION_CODES.N) defaultPreference.setIntent(new Intent(Settings.ACTION_SETTINGS));
|
||||||
else defaultPreference.setIntent(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS));
|
else defaultPreference.setIntent(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS));
|
||||||
@ -79,9 +80,13 @@ public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment {
|
|||||||
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_enabled));
|
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_enabled));
|
||||||
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_change_your_default_sms_app));
|
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_change_your_default_sms_app));
|
||||||
} else {
|
} else {
|
||||||
defaultPreference.setIntent(SmsUtil.getSmsRoleIntent(requireContext()));
|
|
||||||
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_disabled));
|
defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_disabled));
|
||||||
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app));
|
defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app));
|
||||||
|
|
||||||
|
defaultPreference.setOnPreferenceClickListener(preference -> {
|
||||||
|
SmsUtil.startActivityToRequestSmsRole(this, SMS_ROLE_REQUEST_CODE);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,27 +1,41 @@
|
|||||||
package org.thoughtcrime.securesms.util;
|
package org.thoughtcrime.securesms.util;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.app.role.RoleManager;
|
import android.app.role.RoleManager;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.provider.Telephony;
|
import android.provider.Telephony;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
public final class SmsUtil {
|
public final class SmsUtil {
|
||||||
|
|
||||||
private SmsUtil() {
|
private SmsUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @NonNull Intent getSmsRoleIntent(@NonNull Context context) {
|
public static void startActivityToRequestSmsRole(@NonNull Activity activity, int requestCode) {
|
||||||
if (Build.VERSION.SDK_INT >= 29) {
|
if (Build.VERSION.SDK_INT >= 29) {
|
||||||
RoleManager roleManager = ContextCompat.getSystemService(context, RoleManager.class);
|
RoleManager roleManager = ContextCompat.getSystemService(activity, RoleManager.class);
|
||||||
return roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS);
|
Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS);
|
||||||
|
activity.startActivityForResult(intent, requestCode);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
|
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
|
||||||
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
|
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, activity.getPackageName());
|
||||||
return intent;
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user