四大组件之一BroadcastReceiver

标准广播

没有任何先后顺序 都会接收到这条广播 不能被截断

Intent intent=new Intent(“自定义广播”);

//发送一个标准广播
sendBroadcast(intent);

有序广播

有顺序 可以被截断

Intent intent=new Intent(“自定义广播”);

//发送一个有序广播
sendOrderedBroadcast(intent,null);

第二个参数为权限 写null就可以了

在接收广播的onReceiver()方法中可拦截广播

abortBroadcast();

本地广播

发出的广播只能在本程序中传递 广播接收器也只能接收本应用程序发出的广播

动态注册充电状态发生变化广播

public class MainActivity extends AppCompatActivity {

    private MyReceiver myReceiver;

    private IntentFilter intentFilter;

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

        //创建IntentFilter实例
        intentFilter = new IntentFilter();
        //充电状态发生变化的广播
        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
        //注册广播
        myReceiver = new MyReceiver();
        registerReceiver(myReceiver, intentFilter);
    }

    /***
     * 充电状态发生变化执行
     */
    private class MyReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {

            //充电中
            int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
            //判断是否是充电状态
            if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
                setCharging();
            } else {
                setNoBattery();
            }
        }
    }


    private void setNoBattery() {
        Toast.makeText(MainActivity.this,"没有在充电",Toast.LENGTH_SHORT).show();
    }


    private void setCharging() {
        Toast.makeText(MainActivity.this,"有在充电",Toast.LENGTH_SHORT).show();
    }

    /***
     * 注销广播
     */
    @Override
    protected void onDestroy() {
        if (myReceiver != null) {
            unregisterReceiver(myReceiver);
        }
        super.onDestroy();
    }
}

静态注册广播

New–Other–Broadcast Receiver新建广播

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context,"重启了",Toast.LENGTH_SHORT).show();
    }
}

查看AndroidManifest.xml

这里是静态广播的注册

 <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <!--系统重启广播-->
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>

        </receiver>

重启需添加权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值