详解Android中BroadCastReceiver组件

2019-12-10 18:57:11王旭

<receiver android:name=".NetworkStateReceiver"> 
  <intent-filter> 
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    <category android:name="android.intent.category.DEFAULT" /> 
  </intent-filter> 
</receiver> 

因为在isNetworkAvailable方法中我们使用到了网络状态相关的API,所以需要声明相关的权限才行,下面就是对应的权限声明:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

我们可以测试一下,比如关闭WiFi,看看有什么效果。

3.电量变化

如果我们阅读软件,可能是全屏阅读,这个时候用户就看不到剩余的电量,我们就可以为他们提供电量的信息。要想做到这一点,我们需要接收一条电量变化的广播,然后获取百分比信息,这听上去挺简单的,我们就来实现以下:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.BatteryManager; 
import android.util.Log; 

public class BatteryChangedReceiver extends BroadcastReceiver { 

  private static final String TAG = "BatteryChangedReceiver"; 

  @Override 
  public void onReceive(Context context, Intent intent) { 
    int currLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); //当前电量 
    int total = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);   //总电量 
    int percent = currLevel * 100 / total; 
    Log.i(TAG, "battery: " + percent + "%"); 
  } 

}