Sobes.tech
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)