Junior
Оё имкон дорад паёми таратрии худро фиристед?
sobes.tech AI
Ҷавоб аз AI
Бале, мумкин аст.
Истифодаи методи sendBroadcast().
// Сохтани Intent барои broadcast-и мо
val intent = Intent("com.example.MY_CUSTOM_ACTION")
// Илова кардани маълумоти иловагӣ ба Intent (ихтиёрӣ)
intent.putExtra("data_key", "some_value")
// Иҷрои broadcast
sendBroadcast(intent)
Барои қабул кардани ин паём, бояд BroadcastReceiver-ро сабт кунед.
Регистратсия метавонад статикӣ (дар Manifest) ё динамикӣ (дар коди бо ёрии registerReceiver).
Масалан барои сабти динамикӣ:
// Сохтани Filter барои broadcast-и мо
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-ҳои ғайримушаххас ворид кард, барои оптимизатсияи истифодаи манбаъҳо. Барои ирсол кардани чунин паёмҳо дар версияҳои навтар, одатан бояд бастаки дастрасиро нишон диҳед.
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)