Android——广播接收者的动态注册之电量过低提示案例

广播接收者

Android系统提供了一个BroadcastReceiver(广播接收者)组件。

当Android系统产生一个广播事件时,可以有多个对应的BroadcastReceiver接收并进行处理,这些广播接收者只需要在代码中进行注册并指定要接收的广播事件,然后创建一个继承自BroadcastReceiver的类,重写onReceive()方法,并在该方法中对广播事件进行处理。

电量过低提示案例

1.创建一个名为BroadcastReceiver的程序,包名指定为cn.itcast.broadcastreceiver。

2.右击cn.itcast.broadcastreceiver包,【new】-【Java class】创建一个BatteryReceiver类继承自BroadcastReceiver。

重写onReceive()方法

package cn.itcast.broadcastreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class BatteryReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle =intent.getExtras();
        int current =bundle.getInt("level");
        int taotal= bundle.getInt("scale");
        if(current *1.0 /taotal <0.15){
            Toast.makeText(context, "电量过低,请尽快充电", Toast.LENGTH_LONG).show();
        }
    }
}

3.在MainActivity中动态注册广播接收者

通过registerReceiver()方法注册广播接收者,该方法中第一个参数表示广播接收者,第二个参数表示实例化的过滤器

package cn.itcast.broadcastreceiver;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.content.IntentFilter;

public class MainActivity extends AppCompatActivity {
    BatteryReceiver receiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        receiver = new BatteryReceiver();//创建广播接收者实例
        //实例化过滤器并通过addtion()方法设置要过滤的action
        String action= Intent.ACTION_BATTERY_CHANGED;
        IntentFilter intentFilter =new IntentFilter();
        intentFilter.addAction(action);
        registerReceiver(receiver,intentFilter);//通过registerReceiver()方法注册广播接收者
    }
    protected void  onDestroy(){
        super.onDestroy();
        unregisterReceiver(receiver);//当Activity销毁时注销BroadcastReceiver
    }
}

4.运行结果

当手动将电量拉低到20%以下,会发现弹出提示

 

猜你喜欢

转载自blog.csdn.net/weixin_72634509/article/details/127987615