用广播(Broadcast)实现不同app之间的通信

Android中广播类型可以分为2种,一种是系统的自动广播,比说说:电量偏低,网络状态改变,系统时间改变等等。另外一种是我们自己自定义的广播,这种就最常见了。
系统发送来的广播可以被我们自己的或是第三方的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的通信。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值