android自定义广播
概述:
代码:
1,注册一个广播接收类继承broadcastReceiver 并在重写方法onReceive方法,并toast一个文本。
package com.example.custombroadcastreceiver
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast
class MyBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// This method is called when the BroadcastReceiver is receiving an Intent broadcast.
Toast.makeText(context,"receiveed in my broadcasterReceiver",Toast.LENGTH_LONG).show()
}
}
2,在AndroidManifest.xml中配置 receiver
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="sendBroadcast" />
</intent-filter>
</receiver>
3,在activity_main.xml加个按钮点击发送广播
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="send BroatCast"
></Button>
4,实现广播发送方法
package com.example.custombroadcastreceiver
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn.setOnClickListener(){
val intent=Intent("sendBroadcast")
intent.setPackage(packageName)//指定发给哪个程序,从而让他变成显示广播,否则静态注册broadcastReceiver将无法接收到发送的广播
sendBroadcast(intent)
}
}
}