发送广播和接收广播

一、自定义发送广播

1.定义一个按钮布局文件,当按下按钮时发送广播

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="发出广播"
    android:onClick="click"/>
2.Activity中的逻辑代码

//1.使用Intent对象发送,实例化对象
Intent intent = new Intent();
//发送广播的标识--在接受时的标识:接收需要在文件清单中配置
intent.setAction("aa");
//广播的内容;参数1:内容的名字,参数2:发送的内容
intent.putExtra("data","abcdefg");
//2.调用方法,发送广播-->setBroadcast()
this.sendBroadcast(intent);
//发送成功时的土司
Toast.makeText(this,"广播发送成功",Toast.LENGTH_SHORT).show();
二、自定义接收广播

1.显式接收----在文件清单中注册自定义的广播

新建一个接收广播后的执行类————MyReceiver继承BroadcastReceiver广播接收的类

public class MyReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        //接收到广播后执行的操作
        Toast.makeText(context,"我接收到了广播",Toast.LENGTH_SHORT).show();
	//获得接收广播的内容
        String data = intent.getStringExtra("data");
        Toast.makeText(context,data,Toast.LENGTH_SHORT).show();

    }
}

打开文件清单配置如下:

<!--注册接收广播的类-->
<receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="aa"></action>
    </intent-filter>
</receiver>
action属性的name为自定义广播的setAction参数。

模拟方法:在模拟器上打开接收广播的app,按home键使应用到后台,切记不可按下返回键,按下返回键表示此应用被关闭了。然后打开发送广播的app,会土司出“我接受到了广播”

2.隐身接收------在Activity中的逻辑代码注册接收

首先还是定义接收广播后的一个执行操作类----MyYinShiRec

public class MyYinShiRec extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"我接收到了",Toast.LENGTH_SHORT).show();
    }
}
然后在mainActivity中注册MyYinShiRec,代码如下:

myYinShiRec = new MyYinShiRec();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("aa");
this.registerReceiver(myYinShiRec,intentFilter);
最后别忘了,当退出接收时,要将广播取消掉---重写onDestroy()方法即可。
@Override
protected void onDestroy() {
    super.onDestroy();
    //当按下手机返回键时,取消掉广播
    this.unregisterReceiver(myYinShiRec);
}
三、定义接收安卓系统发送的接收广播类
1.定义接收广播类后的执行类
public class LockScreenBroadcast extends BroadcastReceiver{
    private static final String TAG = "liususu";
    @Override
    public void onReceive(Context context, Intent intent) {
       String action = intent.getAction();
        if(action == Intent.ACTION_SCREEN_OFF) {
            Log.e(TAG,"屏锁命令执行了");
       }else if(action == Intent.ACTION_SCREEN_ON) {
            Log.e(TAG,"解锁命令执行了");
        }
    }
}
2.在MainActivity中注册LockScreenBroadcast这个类
public class MainActivity extends AppCompatActivity {

    private LockScreenBroadcast screenBroadcast;

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

        screenBroadcast = new LockScreenBroadcast();
        IntentFilter filter = new IntentFilter();
        //设置系统的广播标识,保证接收的是锁屏指令
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_SCREEN_ON);
        registerReceiver(screenBroadcast,filter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(screenBroadcast);
    }
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值