Warum wird das onReceive-Ereignis in BroadcastReceiver in Android Kotlin nicht ausgelöst, wenn SMS auf demselben Gerät oAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Warum wird das onReceive-Ereignis in BroadcastReceiver in Android Kotlin nicht ausgelöst, wenn SMS auf demselben Gerät o

Post by Anonymous »

Feature-Drop für Android Studio Narwhal 4 | 2025.1.4
Build #AI-251.27812.49.2514.14217341, erstellt am 6. Oktober 2025
VM: OpenJDK 64-Bit Server VM von JetBrains s.r.o.
Kotlin-Plugin: K2-Modus
Gradle 8.13
SDK 36 und API 16
Android Phone API 12
Ich stelle diese Frage, weil meine vorherige verwandte Frage geschlossen wurde, obwohl jemand eine Antwort gepostet hat, die nicht das tut, was ich erwartet hatte.
Kurz gesagt, das onReceive-Ereignis von BroadcastReceiver wird und wird nicht ausgeführt oder aufgerufen. Ich habe alle vorgeschlagenen StackOverflow-Fragen durchgesehen, die mit dieser von mir gestellten Frage in Zusammenhang stehen, und leider hat keiner der Vorschläge und/oder Antworten für mich funktioniert. Ich dachte, ich wäre nah dran, als in einer der Antworten auf eine Frage die Android-Priorität erwähnt wurde. Selbst das hat mein Problem nicht gelöst.
Also, um es einfach zu machen. Ich habe im Grunde mit der Antwort gearbeitet, die ich für meine vorherige Frage durch KOPIEREN und EINFÜGEN gegeben habe. Hier ist es also:
AndroidMainfest.xml

Code: Select all






















SmsReceiver.kt

Code: Select all

package com.example.myfirstapp

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.provider.Telephony
import android.util.Log

class SmsReceiver1 : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == Telephony.Sms.Intents.SMS_RECEIVED_ACTION) {
Log.d("SmsReceiver", "SMS Received!")
val messages = Telephony.Sms.Intents.getMessagesFromIntent(intent)
for (sms in messages) {
Log.d("SmsReceiver", "From: ${sms.displayOriginatingAddress}, Body ${sms.messageBody}")
}
}
}
}
MainActivity

Code: Select all

class MainActivity : AppCompatActivity() {

private val requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
if (permissions.all { it.value }) {
Toast.makeText(this, "SMS Permissions Granted.", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "SMS Permissions Denied.", Toast.LENGTH_LONG).show()
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkAndRequestSmsPermissions()

val smsbtn = findViewById(R.id.SMSButton)
smsbtn.setOnClickListener {

val phoneNumber = "**********"
val message = "HEY!!! lol...  "

// on the below line we are creating a try and catch block
try {

val smsManager: SmsManager
if (Build.VERSION.SDK_INT >= 23) {
//if SDK is greater that or equal to 23 then
//this is how we will initialize the SmsManager
smsManager = this.getSystemService(SmsManager::class.java)
} else {
//if user's SDK is less than 23 then
//SmsManager will be initialized like this
smsManager = SmsManager.getDefault()
Toast.makeText(applicationContext, "less", Toast.LENGTH_LONG).show()
}

// on below line we are sending text message.
smsManager.sendTextMessage(phoneNumber, null, message, null, null)

// on below line we are displaying a toast message for message send,
Toast.makeText(applicationContext, "Message Sent", Toast.LENGTH_LONG).show()

} catch (e: Exception) {

// on catch block we are displaying toast message for error.
Toast.makeText(
applicationContext,
e.message.toString(),
Toast.LENGTH_LONG
)
.show()
}
}
}

private fun checkAndRequestSmsPermissions() {
val requiredPermissions = arrayOf(Manifest.permission.RECEIVE_SMS, Manifest.permission.READ_SMS)
val permissionsToRequest = requiredPermissions.filter {
ContextCompat.checkSelfPermission(this, it) != PackageManager.PERMISSION_GRANTED
}

if (permissionsToRequest.isNotEmpty()) {
requestPermissionLauncher.launch(permissionsToRequest.toTypedArray())
} else {
Toast.makeText(this, "SMS permissions are already granted.", Toast.LENGTH_SHORT).show()
}
}
}
Also klicke ich einfach auf die Schaltfläche „SMS senden“ und erwarte, dass meine App die eingehenden SMS liest, was nicht der Fall ist.
Dies wird direkt aus einer Antwort auf meine vorherige Frage übernommen, mit Ausnahme des Sendens einer SMS-Nachricht smsbtn. Obwohl ich besser verstehe, wie das funktionieren soll, kann ich immer noch nicht verstehen, warum meine App den eingehenden SMS-Text nicht einfach lesen kann. Ich habe sogar AndroidManifest.xml Priorität hinzugefügt. Das hilft immer noch nicht. Jetzt sende ich SMS und versuche, auf demselben Android-Telefon zu empfangen/lesen, auf dem diese App ausgeführt wird. Liegt das daran, dass meine App die eingehenden SMS nicht lesen kann?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post