• BroadcastReceiver接收电量变化的广播-------在代码中动态创建接受者


    本例为动态创建广播接收者即不是在AndroidManifest.xml文件中定义的广播接收着

    代码:

      1 package com.qf.broadcastreceiver01;
      2 
      3 import android.app.Activity;
      4 import android.app.AlertDialog;
      5 import android.content.BroadcastReceiver;
      6 import android.content.Context;
      7 import android.content.Intent;
      8 import android.content.IntentFilter;
      9 import android.os.BatteryManager;
     10 import android.os.Bundle;
     11 import android.util.Log;
     12 import android.widget.TextView;
     13 
     14 /**
     15  * 接收系统广播(三大要素:广播的Action、接收广播的权限、广播中包含的数据) 1)
     16  * 自定义广播接收器类,继承BroadcastReceiver,并重写onReceive()方法 2)
     17  * 注册广播接收器,同时通过IntentFilter声明广播接收器可以接收的广播频道(Action) 3)
     18  * 在广播接收的方法中,实现相关的操作(注:在UI线程中执行的)
     19  * 
     20  * @author apple
     21  * 
     22  */
     23 public class MainActivity extends Activity {
     24 
     25     MyReciver myReciver; // 声明广播接收器的对象
     26 
     27     TextView tv;
     28 
     29     @Override
     30     protected void onCreate(Bundle savedInstanceState) {
     31         super.onCreate(savedInstanceState);
     32         setContentView(R.layout.activity_main);
     33 
     34         tv = (TextView) findViewById(R.id.msgId);
     35 
     36         // 实例化广播接收器和IntentFilter(作用:声明可以接收的广播)
     37         myReciver = new MyReciver();
     38 
     39         IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
     40         // 增加可以接收的广播频道(Action)
     41         filter.addAction(Intent.ACTION_BATTERY_LOW);// 低电量的广播
     42         filter.addAction(Intent.ACTION_POWER_CONNECTED);// 电源连接的广播
     43         filter.addAction(Intent.ACTION_POWER_DISCONNECTED);// 电源断开连接的广播
     44 
     45         // 2. 注册广播接收器-接收系统的电量改变广播
     46         registerReceiver(myReciver, filter);
     47     }
     48 
     49      
     50     /**
     51      *     1. 自定义广播接收器<br>
     52      *  在广播接收器的接收广播的方法中,可以实现以下功能:<br>
     53      *  <li>启动Activity
     54      *      <br><font color=blue>注:在全局的广播接收器中,启动的Activity时必须带有Intent.FLAG_NEW_TASK
     55      *      </font>
     56      *  <li>显示对话框,但必须存在Activity
     57      *  <li>启动Service
     58      *  <li>发送通知
     59      *  <li>弹出Toast
     60      *  
     61      * @author apple
     62      *
     63      */
     64     
     65     class MyReciver extends BroadcastReceiver {
     66         @Override
     67         public void onReceive(Context context, Intent intent) {
     68             // TODO 接收广播的方法--是在UI线程中执行的方法
     69             // 3、 获取广播中的数据,并显示到UI控件
     70             String action = intent.getAction();// 获取广播的Action
     71             Log.d("debug", "---->" + action);
     72 
     73             if (action == Intent.ACTION_BATTERY_CHANGED) {
     74                 // 获取电量的等级信息(百分比)
     75                 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
     76 
     77                 tv.setText("当前的电量(百分比):" + level);
     78                 if(level<10){
     79                     //弹出电量过低的对话框
     80                     new AlertDialog.Builder(MainActivity.this)
     81                         .setTitle("提示")
     82                         .setIcon(R.drawable.ic_launcher)
     83                         .setMessage("当前电量过低,请插入电源或关机....")
     84                         .setPositiveButton("确定", null)
     85                         .setNegativeButton("取消", null)
     86                         .create().show();
     87                 }
     88 
     89             }else if(action==Intent.ACTION_POWER_CONNECTED){
     90                 tv.setText("电源已连接:" );
     91             }else if(action==Intent.ACTION_POWER_DISCONNECTED){
     92                 tv.setText("电源已断开连接:" );
     93                 //启动InfoActivity组件
     94                 Intent infoIntent=new Intent(context,InfoActivity.class);
     95                 context.startActivity(infoIntent);
     96                 
     97             }else{
     98                 tv.setText("电量过低!!!" );
     99             }
    100         }
    101     }
    102 
    103 }
    MainActivity.java
  • 相关阅读:
    JVM调优(一)——参数查询和问题排查
    spring-cloud feign (web服务客户端)(四)
    spring-cloud hystrix(三)
    springCloud ribbon均衡负载的配置及原理 (二)
    maven
    springCloud Eureka 注册中心原理及配置理解(一)
    threadLocal 的使用及意义
    数据库引擎类型
    sql 优化
    sql 的执行计划理解
  • 原文地址:https://www.cnblogs.com/bimingcong/p/4820489.html
Copyright © 2020-2023  润新知