Я где-то читал, что несколько дней невозможно прочитать приложение, пока вы не сделаете свое приложение «приложением SMS по умолчанию».
но для этого нам нужно выполнить определенные функции.
Что я думаю, что я выполнил
- Добавить необходимые разрешения
- Добавить получатели, такие как BROADCAST_SMS и BROADCAST_WAP_PUSH
- Основное приложение для реализации фильтров намерений
- Запросить разрешение во время выполнения (действие по щелчку пользователя)
Я вижу некоторые всплывающие окна при запуске приложения (и я их разрешаю), но не могу читать сообщения, так как они никогда не открываются, когда я нажимаю кнопку «Входящие».
Настройки -> Приложения -> Приложения по умолчанию -> Приложение SMS (Сообщения)
Не могу видеть свое приложение в приложениях по умолчанию
Нажатие кнопки «Входящие»
Код: Выделить всё
onNavigateToInbox = {
if (Telephony.Sms.getDefaultSmsPackage(this@MainActivity) != packageName) {
requestDefaultSmsApp()
} else {
navController.navigate("inbox")
}
}
Код: Выделить всё
xmlns:tools="http://schemas.android.com/tools">
и вот я также добавил в тег приложения
Код: Выделить всё
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/Theme.Xter">
Я также добавил получатели
Код: Выделить всё
В метод onCreate файла MainActivity добавлено следующее
Код: Выделить всё
override fun onCreate(savedInstanceState: Bundle?) {
....
setContent {
XterTheme {
LaunchedEffect(Unit) {
if (Telephony.Sms.getDefaultSmsPackage(this@MainActivity) != packageName) {
requestDefaultSmsApp()
}
}
....
}
Код: Выделить всё
private fun requestDefaultSmsApp() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val roleManager = getSystemService(RoleManager::class.java)
if (roleManager.isRoleAvailable(RoleManager.ROLE_SMS) &&
!roleManager.isRoleHeld(RoleManager.ROLE_SMS)
) {
val intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS)
startActivity(intent)
}
} else {
val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(
Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
packageName
)
startActivity(intent)
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ation-code
Мобильная версия