Нет ответа от намерения предложить пользователю установить обработчик по умолчанию для SMS - PullRequest
0 голосов
/ 27 октября 2019

У меня сейчас проблемы с тем, чтобы приложение отправляло пользователю диалоговое окно для установки обработчика по умолчанию для SMS в API 29.

Сначала я следовал https://developer.android.com/guide/topics/permissions/default-handlers.

Это не сработало, поэтому я осмотрелся и увидел следующее: Как настроить SMS-запрос по умолчанию для KitKat .

Итак, я последовал https://android -developers.googleblog.com / 2013/10 / getting-your-sms-apps-ready-for-kitkat.html и добавил фрагмент в свойманифест XML (без фактической реализации, как сказал пользователь StackOverflow в посте). К сожалению, каждый раз, когда я нажимаю кнопку, которая запускает намерение ACTION_CHANGE_DEFAULT, ничего не происходит, кроме его входа.

Моя основная деятельность связана со следующим:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var btn = findViewById<Button>(R.id.button3)
        btn.setOnClickListener {
            Log.d("TAG", "Sending change default intent")
            val setSmsAppIntent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
            setSmsAppIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
            startActivityForResult(setSmsAppIntent, CHANGE_SMS_DEFAULT_RESULT)
        }
    }

Манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.testapplication">

    <uses-permission android:name="android.permission.READ_SMS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <service
            android:name=".FetchSMS"
            android:exported="false"></service>

        <activity
            android:name=".DisplayMessageActivity"
            android:parentActivityName=".MainActivity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- These are ONLY used to set app as default SMS -->
        <receiver android:name=".SmsReceiver"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_DELIVER" />
            </intent-filter>
        </receiver>

        <!-- BroadcastReceiver that listens for incoming MMS messages -->
        <receiver android:name=".MmsReceiver"
            android:permission="android.permission.BROADCAST_WAP_PUSH">
            <intent-filter>
                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
                <data android:mimeType="application/vnd.wap.mms-message" />
            </intent-filter>
        </receiver>

        <!-- Activity that allows the user to send new SMS/MMS messages -->
        <activity android:name=".ComposeSmsActivity" >
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.SENDTO" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="sms" />
                <data android:scheme="smsto" />
                <data android:scheme="mms" />
                <data android:scheme="mmsto" />
            </intent-filter>
        </activity>

        <!-- Service that delivers messages from the phone "quick response" -->
        <service android:name=".HeadlessSmsSendService"
            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
            android:exported="true" >
            <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>

    </application>

</manifest>

Журнал:

enter image description here

Буду признателен за помощь. Заранее спасибо.

Мой minSdkVersion равен 19

Редактировать: я только что попробовал это на эмуляторе на KitKat (API 19), и это сработало - но на Q (API это не работает)29)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...