Ich habe vor einigen Tagen irgendwo gelesen, dass es nicht möglich ist, die Anwendung zu lesen, bis Sie Ihre App als „Standard-SMS-App“ festlegen.
Aber dazu müssen wir bestimmte Funktionalitäten erfüllen.
Was ich meiner Meinung nach abgeschlossen habe
- Erforderliche Berechtigungen hinzufügen
- Empfänger wie BROADCAST_SMS und BROADCAST_WAP_PUSH hinzufügen
- Hauptanwendung zum Implementieren von Intent-Filtern
- Berechtigung zur Laufzeit anfordern (Benutzerklickaktion)
Ich sehe einige Popups beim Start der Anwendung (und ich erlaube sie), aber Nachrichten können nicht gelesen werden, da sie nie weitergehen, wenn ich auf die Schaltfläche „Posteingang“ klicke
Einstellungen -> Apps -> Standard-Apps -> SMS-App (Nachrichten)
Meine Anwendung wird in Standard-Apps nicht angezeigt
Klick auf die Schaltfläche „Posteingang“
Code: Select all
onNavigateToInbox = {
if (Telephony.Sms.getDefaultSmsPackage(this@MainActivity) != packageName) {
requestDefaultSmsApp()
} else {
navController.navigate("inbox")
}
}
Code: Select all
xmlns:tools="http://schemas.android.com/tools">
und hier habe ich auch das Anwendungs-Tag hinzugefügt
Code: Select all
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">
Ich habe auch die Empfänger hinzugefügt
Code: Select all
Folgendes in der MainActivity-Datei onCreate-Methode hinzugefügt
Code: Select all
override fun onCreate(savedInstanceState: Bundle?) {
....
setContent {
XterTheme {
LaunchedEffect(Unit) {
if (Telephony.Sms.getDefaultSmsPackage(this@MainActivity) != packageName) {
requestDefaultSmsApp()
}
}
....
}
Code: Select all
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)
}
}
Mobile version