У меня сейчас проблемы с тем, чтобы приложение отправляло пользователю диалоговое окно для установки обработчика по умолчанию для 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](https://i.stack.imgur.com/k18Xm.png)
Буду признателен за помощь. Заранее спасибо.
Мой minSdkVersion
равен 19
Редактировать: я только что попробовал это на эмуляторе на KitKat (API 19), и это сработало - но на Q (API это не работает)29)