android广播 监听开机 监听电池电量 监听网络

来源:互联网 发布:蜂窝数据各app关不了 编辑:程序博客网 时间:2024/05/22 01:35
用于注册和申请监听权限
//监听开机广播权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />   <!-- 注册开机广播地址-->          <action android:name="android.intent.action.BOOT_COMPLETED"/>          <category android:name="android.intent.category.DEFAULT" />  



监听电池变化

1.在清单文件中注册广播,并监听的类型

//广播的注册<receiver android:name=".BatteryChangedReceiver">      <intent-filter>          <action android:name="android.intent.action.BATTERY_CHANGED"/>          <category android:name="android.intent.category.DEFAULT" />      </intent-filter>  </receiver>  

广播接收者,发送当前电池变化:编写一个广播接收者

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 + "%");      }    }  

获取电池电量

//获取电池当前电量Intent batteryIntent = getApplicationContext().registerReceiver(null,          new IntentFilter(Intent.ACTION_BATTERY_CHANGED));  int currLevel = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);  int total = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);  int percent = currLevel * 100 / total;  Log.i("battery", "battery: " + percent + "%");  

监听网络变化

1.申请权限

//监听网络是否可能的广播;权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  

2.注册广播接收者

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

3.创建广播接收着监听网络变化

public class NetworkStateReceiver extends BroadcastReceiver {            private static final String TAG = "NetworkStateReceiver";            @Override      public void onReceive(Context context, Intent intent) {          Log.i(TAG, "network state changed.");          if (!isNetworkAvailable(context)) {              Toast.makeText(context, "network disconnected!", 0).show();  //用于创建回调方法 //通知使用网络的工具是否进行下载,如果没有网络则取消进行下载;        }      }            /**      * 网络是否可用      *       * @param context      * @return      */      public static boolean isNetworkAvailable(Context context) {          ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo[] info = mgr.getAllNetworkInfo();          if (info != null) {              for (int i = 0; i < info.length; i++) {                  if (info[i].getState() == NetworkInfo.State.CONNECTED) {                      return true;                  }              }          }          return false;      }  }




0 0
原创粉丝点击