Junior
შეგიძლიათ თქვენი საკუთარი ბროდკასტ შეტყობინება გაუგზავნოთ?
sobes.tech AI
პასუხი AI-სგან
ஆம், அது சாத்தியமாகும்.
sendBroadcast() முறை பயன்படுத்தப்படுகிறது.
// நமது broadcast க்கான Intent ஐ உருவாக்குகிறோம்
val intent = Intent("com.example.MY_CUSTOM_ACTION")
// கூடுதல் தரவுகளை Intent இல் சேர்க்கலாம் (தேர்வை)
intent.putExtra("data_key", "some_value")
// broadcast ஐ அனுப்புகிறோம்
sendBroadcast(intent)
இந்த செய்தியை பெற BroadcastReceiver-ஐ பதிவு செய்ய வேண்டும்.
பதிவு நிலையானது (Manifest இல்) அல்லது டைனமிக் (registerReceiver மூலம்) ஆகும்.
டைனமிக் பதிவு உதாரணம்:
// நமது broadcast க்கான Filter ஐ உருவாக்குகிறோம்
val filter = IntentFilter("com.example.MY_CUSTOM_ACTION")
// BroadcastReceiver ஐ உருவாக்குகிறோம்
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// பெறப்பட்ட செய்தியை செயலாக்கு
val receivedData = intent?.getStringExtra("data_key")
Log.d("BroadcastReceiver", "தனிப்பட்ட broadcast மற்றும் தரவு: $receivedData")
}
}
// BroadcastReceiver ஐ பதிவு செய்க
registerReceiver(receiver, filter)
// கூறு அழிக்கும்போது பதிவு ரத்து செய்ய வேண்டும்
// unregisterReceiver(receiver)
பின்வரும் முக்கியமான அம்சங்களை கவனிக்கவும்:
- தெரிவான broadcast செய்திகள்: Android 8.0 (API நிலை 26) மற்றும் அதற்கு மேல் பதிப்புகளில், வளங்களை சேமிப்பதற்காக, தெரியாத broadcast-களுக்கு கட்டுப்பாடுகள் விதிக்கப்பட்டுள்ளன. இத்தகைய செய்திகள் அனுப்புவதற்கு, பெரும்பாலும், பெறுநரின் பாக்கேஜை குறிப்பிட வேண்டும் (தெரிவான broadcast).
val intent = Intent("com.example.MY_CUSTOM_ACTION") // பெறுநரின் பாக்கேஜை குறிப்பிடுக (அறிவிக்கப்பட்டால்) intent.setPackage("com.example.receiverapp") sendBroadcast(intent) - அனுமதிகள்: குறிப்பிட்ட பாதுகாப்பு நிலை கொண்ட broadcast-களை அனுப்ப மற்றும் பெற, தேவையான அனுமதிகள் (உதாரணத்திற்கு,
android.permission.SEND_SMS) தேவைப்படலாம். - உள்ளூர் broadcast-கள்: ஒரே பயன்பாட்டுக்குள் மட்டுமே செய்திகளை அனுப்ப,
LocalBroadcastManagerபயன்படுத்த பரிந்துரைக்கப்படுகிறது (இப்போது பழுதடைந்தது, மாற்று முறைகள், உதாரணத்திற்கு, Flow அல்லது RxJava, பயன்படுத்த பரிந்துரைக்கப்படுகிறது), இது அதிக பாதுகாப்பும், திறனும் கொண்டது.// உள்ளூர் broadcast அனுப்புக val localIntent = Intent("com.example.MY_LOCAL_ACTION") LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent) // உள்ளூர் BroadcastReceiver பதிவு val localReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { // செயலாக்கம் } } LocalBroadcastManager.getInstance(this).registerReceiver(localReceiver, IntentFilter("com.example.MY_LOCAL_ACTION")) // பதிவு ரத்து // LocalBroadcastManager.getInstance(this).unregisterReceiver(localReceiver)