22 广播的几种创建和发送方式

  • 静态方式
    创建一个类继承BroadcastReceiver
public class MyBroadCastReceiver01 extends BroadcastReceiver{

    /**
     * 就一个生命周期      普通广播10s
     */
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

    }

}

并在manifest中<application>标签中写

<!--权限值范围越大接受的广播顺序越靠前-->
<!--权限值范围(-10000到10000)-->
 <receiver android:name="继承BroadcastReceiver 的类的包名.类名">
            <intent-filter 
                android:priority="权限值大小" >
                <action android:name="你的意图"/>
            </intent-filter>
        </receiver>

那么你将可以接受意图相同的广播
或者发送广播时指定你(此时意图可不写)
如:

package com.qf.day22_broadcastreceiver_demo1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //发送广播
    public void MySendClick(View v){

        Intent intent = new Intent(MainActivity.this, MyBroadCastReceiver01.class);
        intent.putExtra("str", "疯狗咬人");
        //发送普通的广播
        sendBroadcast(intent);

    }



}
  • 动态方式
    随便一个类继承BroadcastReceiver 内部类也可
BroadcastReceiver receicer=new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub

            }
        };

注册权限

    //获取意图过滤器
        IntentFilter intentFilter = new IntentFilter();
        //添加Action
        intentFilter.addAction("qq.weixin.mm");
registerReceiver(receicer, intentFilter);
一般我们在onresume注册 然后在onstop取消注册

取消注册

unregisterReceiver(receicer);

发送广播两种方法
普通广播 :其他广播接受则无法阻拦或者修改广播发送其他接受者

Intent intent = new Intent();
intent.setAction("cctv.hlj.beijin");
intent.putExtra("str", "iphone7");
//普通广播 
sendBroadcast(intent);

有序广播根据广播接受顺序发送 ,其他广播接受者可以接受修改此广播在发送给其他人

Intent intent = new Intent();
        intent.setAction("cctv.hlj.beijin");
        intent.putExtra("str", "iphone7");


        //有序广播1

        sendOrderedBroadcast(intent, null);

        //有序广播2 并设置最终接受者 不管abortBroadcast();依然最后收到
        sendOrderedBroadcast(intent, null,new BroadcastReceiver(){

            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub

            }

        }, null, 0, null, null);

转载于:https://www.cnblogs.com/muyuge/p/6152199.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值