用广播(Broadcast)实现不同app之间的通信
2015-12-26 11:37
351 查看
Android中广播类型可以分为2种,一种是系统的自动广播,比说说:电量偏低,网络状态改变,系统时间改变等等。另外一种是我们自己自定义的广播,这种就最常见了。
系统发送来的广播可以被我们自己的或是第三方的app接收到,这说明了广播是可以实现不同app之间通信的。这也是我个人认为广播没有界面和用户交互的好处。
现在写个小demo测试广播在不同app间通信:即在demo 02 中,发送广播,试试demo 03能否接收到。
demo 02的逻辑非常简单:就是自定义一个广播,并点击button发送出去:
MainActivity中的代码:
注意要在mainfest中配置下(其中我的action name起得也不规范,不过这里这样写的目的是看看对action name起名有没有什么特殊要求。推荐格式参照官方文档即可)。
当点击button之后,可以收到发来的广播,说明,广播可以实现app内部之间的通信。
现在来看广播在不同app之间的通信:
定义一个Demo 03, 注册一个广播接收者, 代码如下:
配置文件:
当点击第二个app的时候:
这里吐司显示就说明了Demo 02 在发送广播,Demo 03 收到广播之后吐司提示:收到了上个的广播,实现了Demo 02 和 Demo 03的通信。
系统发送来的广播可以被我们自己的或是第三方的app接收到,这说明了广播是可以实现不同app之间通信的。这也是我个人认为广播没有界面和用户交互的好处。
现在写个小demo测试广播在不同app间通信:即在demo 02 中,发送广播,试试demo 03能否接收到。
demo 02的逻辑非常简单:就是自定义一个广播,并点击button发送出去:
MainActivity中的代码:
public class MainActivity extends Activity { private Button mSendButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSendButton = (Button) findViewById(R.id.btn_send); mSendButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点击的时候发送一条广播出去 Intent intent = new Intent("THIS_IS"); sendBroadcast(intent); } }); } }
public class MyBroadcastReciver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //处理收到广播的逻辑: Toast.makeText(context, "广播来了", 0).show(); } }
注意要在mainfest中配置下(其中我的action name起得也不规范,不过这里这样写的目的是看看对action name起名有没有什么特殊要求。推荐格式参照官方文档即可)。
<receiver android:name="com.huang.demo02.MyBroadcastReciver"> <intent-filter > <action android:name="THIS_IS"/> </intent-filter> </receiver>
当点击button之后,可以收到发来的广播,说明,广播可以实现app内部之间的通信。
现在来看广播在不同app之间的通信:
定义一个Demo 03, 注册一个广播接收者, 代码如下:
public class SecondBroadcaseReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //处理手动广播的逻辑 Toast.makeText(context, "收到上个的广播", 0).show(); } }
配置文件:
<receiver android:name="com.huang.demo03.SecondBroadcaseReceiver"> <intent-filter > <action android:name="THIS_IS"/> </intent-filter> </receiver>
当点击第二个app的时候:
这里吐司显示就说明了Demo 02 在发送广播,Demo 03 收到广播之后吐司提示:收到了上个的广播,实现了Demo 02 和 Demo 03的通信。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories