您的位置:首页技术文章
文章详情页

Android BroadcastReceiver广播简单使用

【字号: 日期:2022-09-19 10:07:21浏览:15作者:猪猪

本文实例为大家分享了Android BroadcastReceiver广播使用的具体代码,供大家参考,具体内容如下

静态的BroadcastReceiver

主要代码

public class MyReceiver extends BroadcastReceiver { @Override //接受广播时回调 public void onReceive(Context context, Intent intent) {//接收广播 if(intent != null){ //接收到是什么广播 String action = intent.getAction(); Log.e('测试',action); } }}

在AndroidManifest.xml里设置权限

<receiver android:name='.MyReceiver'> <!--接受广播类型--> <intent-filter><!--开机广播--><action android:name='android.intent.action.BOOT_COMPLETED'/><!--电量低广播--><action android:name='android.intent.action.BATTERY_LOW'/><!--应用卸载--><action android:name='android.intent.action.PACKAGE_REMOVED'/><!--应用安装--><action android:name='android.intent.action.PACKAGE_INSTALL'/><!--数据类型--><data android:scheme='package'/> </intent-filter></receiver>

动态的BroadcastReceiver

主要代码

1.设置一个Java类继承BroadcastReceiver

public class MyReceiverD extends BroadcastReceiver { @Override //接受广播时回调(不能做耗时操作,必须开子线程) public void onReceive(Context context, Intent intent) { //接收广播 if(intent != null){//接收到是什么广播String action = intent.getAction();Log.e('测试',action); }} }

在AndroidManifest.xml里设置权限

<!--动态注册--><receiver android:name='.MyReceiverD'>//因为是动态设置就不需要在里面设置别的了</receiver>

3.MainActivity

//新建一个广播接收器 动态广播receiverD = new MyReceiverD();//接收那种广播IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);intentFilter.addDataScheme('package');intentFilter.addAction(Intent.ACTION_BATTERY_LOW);//注册广播接收器registerReceiver(receiverD,intentFilter);protected void onDestroy() {super.onDestroy();//取消注册关闭接收器if (receiverD != null){ unregisterReceiver(receiverD);} }

随便卸载一个应用控制台就会显示

Android BroadcastReceiver广播简单使用

自定义的BroadcastReceiver

1.还是准备一个Java继承BroadcastReceiver

public class MyReceiverD_zdy extends BroadcastReceiver { private TextView txt; public MyReceiverD_zdy(TextView txt) {this.txt = txt; } public MyReceiverD_zdy() { } @Override public void onReceive(Context context, Intent intent) {//接收广播if(intent != null){ //接收到是什么广播 String action = intent.getAction(); Log.e('测试',action); //判断是什么广播,是否是自己自定义的广播 if (TextUtils.equals(action,MainActivity.MY_ACTION)){//获取广播携带的数据String content = intent.getStringExtra(MainActivity.BROADCAST_CONTENT); if (txt != null){ txt.setText('接收到的action是:'+action+'n接收到的内容是'+content); } }} }}

2.activity_main.xml

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' tools:context='.MainActivity' android:orientation='vertical' android:padding='16dp' > <TextViewandroid:layout_width='match_parent'android:layout_height='wrap_content'android:text='请输入发送内容:'/> <EditTextandroid: android:layout_width='match_parent'android:layout_height='50dp'android:layout_marginTop='16dp'/> <Buttonandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:layout_marginTop='16dp'android:layout_gravity='center_horizontal'android:text='发送广播'/> <TextViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:layout_marginTop='16dp'android:text='收到的内容:'/></LinearLayout>

3.MainActivity

public class MainActivity extends AppCompatActivity { private MyReceiverD receiverD; private MyReceiverD_zdy receiverDZdy; private Button bnt; private EditText etxt; private TextView txt; public static final String MY_ACTION = 'com.example.my'; public static final String BROADCAST_CONTENT = 'cs'; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();//设置应用主页面的标题setTitle(getPackageName()); //新建广播接收器receiverDZdy = new MyReceiverD_zdy(txt);//注册广播接收器//为广播添加ActionIntentFilter intentFilter = new IntentFilter();intentFilter.addAction('android.intent.action,PACKAGE_REMOVED');//自定义intentFilter.addAction(MY_ACTION);//注册广播接收器registerReceiver(receiverDZdy,intentFilter);bnt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {//新建广播 自定义Intent intent = new Intent(MY_ACTION);//携带数据intent.putExtra(BROADCAST_CONTENT,etxt.getText().toString());//发送广播sendBroadcast(intent); }}); } protected void onDestroy() {super.onDestroy();//取消注册关闭接收器if (receiverDZdy != null){ unregisterReceiver(receiverDZdy);} } private void initView() {//初始化etxt = (EditText) findViewById(R.id.etxt);txt =(TextView) findViewById(R.id.txt);bnt =(Button) findViewById(R.id.bnt); }}

样式

Android BroadcastReceiver广播简单使用

当然也可以实现不同app接受发送的广播内容复制代码换app名字,当前app发送的广播新的app也可以接收到

Android BroadcastReceiver广播简单使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Android
相关文章: