Android - приложение для смс по умолчанию

Android 11 / api 30, Как можно назначить/запросить разрешение для того чтобы сделать приложение основным для смс?


Ответы (1 шт):

Автор решения: Barmaley

Надо сделать так:

Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, myPackageName);
startActivity(intent);

Где myPackageName имя пакета вашего приложения для обработки SMS

При этом предполагается, что ваше приложение должно уметь минимум 4 вещи:

  1. Перехватывать (уметь обрабатывать) бродкаст при получении SMS: action android:name="android.provider.Telephony.SMS_DELIVER"
  2. Перехватывать (уметь обрабатывать) бродкаст при получении MMS: action android:name="android.provider.Telephony.WAP_PUSH_DELIVER"
  3. Иметь Intent обрабатывающий создание новых сообщений: action android:name="android.intent.action.SEND/SENDTO"
  4. Иметь сервис для "быстрого" ответа, типа:
    <service
            android:name=".HeadlessSmsSendService"
            android:exported="true"
            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
            <intent-filter>
                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="sms" />
                <data android:scheme="smsto" />
                <data android:scheme="mms" />
                <data android:scheme="mmsto" />
            </intent-filter>
        </service>

Только при выполнении этих условий вы увидите при запуске Intent'а диалог подтверждения смены приложения для обработки SMS

→ Ссылка