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
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}")
}
}
}
}
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()
}
}
}
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?
Mobile version