android BroadcastReceiver 广播
2017-07-11 19:48
344 查看
BroadcastReceiver 广播
先分析一下 什么是广播 类似于学校的广播器 有人发送,也有人接收。也可能是一对一,一对多。
广播也有专属于它的频段。你也可以不接受这一个 ,选择其他的广播。
那么android里面也有广播,
什么是广播?
Android四大组件之一;
一种全局的监听器,用于监听系统全局的广播消息
系统大部分都以广播形式发布,比如开机启动完成的消息,收到短信的消息,打进打出电话得到消息
ex::Android系统每次启动会向外广播一条信息,告诉所有人完成了,只有继承自Broadcast的类能捕捉到这些系统消息,捕捉到信息该干嘛就干嘛。
说这么多 给大家一张思维导图看一看就知道了
然后给大家广播中的无序广播
我先新建了3个Moudle来实现
首先 必须有个发送者 和接收者
发送者
android_sender 这是发送者 其他两个是接受者
里面的activity_main.xml 里面我就定义了两个控件
然后来到Mainactivity.java文件
然后一个发送者就完成了
这里 注意 我们要发送一个黏性广播 就要定义黏性广播的权限
那么在AndroidManifest.xml 里面加上这句权限
包括的内容里面
上面那张图 给大家解释了 什么叫做黏性广播 大家可以自己去看
好 那么下面写接受者
首先是android_receiver01 这个使用黏性主播接受
先定义一个MyReceiver01 继承BroadcastReceiver
好 然后去MainActivity.java里面
好 一个黏性的广播 就写完了
当然还要去AndroidManifest.xml去注册 这是我的
上面我只用了打印 各位有需求 就自己再去改变 都有注释
还有\android_receiver_02
同样也需要定义一个MyReceiver02.java
然后 二号一个普通接受者就可以了
看运行结果 我用了夜神模拟器
这就是今天的无序广播 接受没有顺序的 下次给大家带来有序的广播
先分析一下 什么是广播 类似于学校的广播器 有人发送,也有人接收。也可能是一对一,一对多。
广播也有专属于它的频段。你也可以不接受这一个 ,选择其他的广播。
那么android里面也有广播,
什么是广播?
Android四大组件之一;
一种全局的监听器,用于监听系统全局的广播消息
系统大部分都以广播形式发布,比如开机启动完成的消息,收到短信的消息,打进打出电话得到消息
ex::Android系统每次启动会向外广播一条信息,告诉所有人完成了,只有继承自Broadcast的类能捕捉到这些系统消息,捕捉到信息该干嘛就干嘛。
说这么多 给大家一张思维导图看一看就知道了
然后给大家广播中的无序广播
我先新建了3个Moudle来实现
首先 必须有个发送者 和接收者
发送者
android_sender 这是发送者 其他两个是接受者
里面的activity_main.xml 里面我就定义了两个控件
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/et_main_content" android:hint="请输入" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:onClick="send" />
然后来到Mainactivity.java文件
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText et_main_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_content = (EditText) findViewById(R.id.et_main_content); } public void send(View view){ String content=et_main_content.getText().toString(); //发送广播 //两种类型广播 //有序广播 无序广播 Intent intent=new Intent(); //指定广播的名字 intent.setAction("com.example.android_sender.Hug"); //指定广播内容 intent.putExtra("content",content); // //发送无序广播 // sendBroadcast(intent); //发送无序黏性广播 sendStickyBroadcast(intent);
然后一个发送者就完成了
这里 注意 我们要发送一个黏性广播 就要定义黏性广播的权限
那么在AndroidManifest.xml 里面加上这句权限
<!--黏性广播权限--> <uses-permission android:name="android.permission.BROADCAST_STICKY"></uses-permission>就在<manifest></manifest>
包括的内容里面
上面那张图 给大家解释了 什么叫做黏性广播 大家可以自己去看
好 那么下面写接受者
首先是android_receiver01 这个使用黏性主播接受
先定义一个MyReceiver01 继承BroadcastReceiver
public class MyReceiver01 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //获取广播的名字 String action=intent.getAction(); if ("com.example.android_sender.Hug".equals(action)){ //获取广播内容 String content=intent.getStringExtra("content"); Log.i("test","广播接受者一号:"+content); } } }
好 然后去MainActivity.java里面
import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private MyReceiver01 myReceiver01; private IntentFilter intentFilter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myReceiver01 = new MyReceiver01(); intentFilter = new IntentFilter(); intentFilter.addAction("com.example.android_sender.Hug"); } @Override protected void onResume() { super.onResume(); //注册广播 registerReceiver(myReceiver01,intentFilter); } @Override protected void onDestroy() { super.onDestroy(); //取消注册 注销 unregisterReceiver(myReceiver01); } }
好 一个黏性的广播 就写完了
当然还要去AndroidManifest.xml去注册 这是我的
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android_receiver01"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--注册:广播接受者 动态注册:使用java代码配置 静态注册:在XML文件中配置 --> <receiver android:name=".MyReceiver01"> <intent-filter> <action android:name="com.example.android_sender.Hug"></action> </intent-filter> </receiver> </application> </manifest>
上面我只用了打印 各位有需求 就自己再去改变 都有注释
还有\android_receiver_02
同样也需要定义一个MyReceiver02.java
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; /** * Created by admin on 2017/7/11. */ public class MyReceiver02 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //获取广播的名字 String action=intent.getAction(); if("com.example.android_sender.Hug".equals(action)){ //获取广播内容 String content=intent.getStringExtra("content"); Log.i("test","广播接受者2号:"+content); } } }
然后 二号一个普通接受者就可以了
看运行结果 我用了夜神模拟器
这就是今天的无序广播 接受没有顺序的 下次给大家带来有序的广播
相关文章推荐
- android_BroadcastReceiver 广播机制
- Android实现闹钟,通过AlarmManager+BroadcastReceiver(广播)
- Android BroadcastReceiver接收收到短信的广播
- Android四大组件之一:BroadcastReceiver(广播接收者)
- Android LocalBroadcastManager 注册广播和直接registerReceiver的区别
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- Android -- Android的广播机制(BroadcastReceiver)
- Android中广播接收者BroadcastReceiver详解
- android-BroadcastReceiver 系统开机广播
- Android广播接收 BroadcastReceiver监听系统全局的Broadcast消息
- Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
- Android学习Broadcast Receiver(广播接收者) 注意事项
- Android广播接收机制(BroadcastReceiver)
- Android 四大组件之BroadcastReceiver(发送有序无序广播)
- Android - Broadcast receiver 作为内部类接受广播
- Android-广播BroadcastReceiver-自定义广播接受者和发送者
- Android BroadcastReceiver实例Demo(有序广播的发送)
- Android四大组件之Broadcast Receiver(广播)
- Android自定义一个广播接收器BroadcastReceiver监听系统wifi连接
- 【BroadcastReceiver】广播接收器 broadcast sendOrderedBroadcast android