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

代码:

 package com.qf.broadcastreceiver01;

 import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView; /**
* 接收系统广播(三大要素:广播的Action、接收广播的权限、广播中包含的数据) 1)
* 自定义广播接收器类,继承BroadcastReceiver,并重写onReceive()方法 2)
* 注册广播接收器,同时通过IntentFilter声明广播接收器可以接收的广播频道(Action) 3)
* 在广播接收的方法中,实现相关的操作(注:在UI线程中执行的)
*
* @author apple
*
*/
public class MainActivity extends Activity { MyReciver myReciver; // 声明广播接收器的对象 TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.msgId); // 实例化广播接收器和IntentFilter(作用:声明可以接收的广播)
myReciver = new MyReciver(); IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
// 增加可以接收的广播频道(Action)
filter.addAction(Intent.ACTION_BATTERY_LOW);// 低电量的广播
filter.addAction(Intent.ACTION_POWER_CONNECTED);// 电源连接的广播
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);// 电源断开连接的广播 // 2. 注册广播接收器-接收系统的电量改变广播
registerReceiver(myReciver, filter);
} /**
* 1. 自定义广播接收器<br>
* 在广播接收器的接收广播的方法中,可以实现以下功能:<br>
* <li>启动Activity
* <br><font color=blue>注:在全局的广播接收器中,启动的Activity时必须带有Intent.FLAG_NEW_TASK
* </font>
* <li>显示对话框,但必须存在Activity
* <li>启动Service
* <li>发送通知
* <li>弹出Toast
*
* @author apple
*
*/ class MyReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO 接收广播的方法--是在UI线程中执行的方法
// 3、 获取广播中的数据,并显示到UI控件
String action = intent.getAction();// 获取广播的Action
Log.d("debug", "---->" + action); if (action == Intent.ACTION_BATTERY_CHANGED) {
// 获取电量的等级信息(百分比)
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); tv.setText("当前的电量(百分比):" + level);
if(level<10){
//弹出电量过低的对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("提示")
.setIcon(R.drawable.ic_launcher)
.setMessage("当前电量过低,请插入电源或关机....")
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.create().show();
} }else if(action==Intent.ACTION_POWER_CONNECTED){
tv.setText("电源已连接:" );
}else if(action==Intent.ACTION_POWER_DISCONNECTED){
tv.setText("电源已断开连接:" );
//启动InfoActivity组件
Intent infoIntent=new Intent(context,InfoActivity.class);
context.startActivity(infoIntent); }else{
tv.setText("电量过低!!!" );
}
}
} }

MainActivity.java

BroadcastReceiver接收电量变化的广播-------在代码中动态创建接受者的更多相关文章

  1. BroadcastReceiver 接收系统短信广播

    BroadcastReceiver 接收系统短信广播 /* 注册广播:    * |--静态注册  (在AndroidManifest .xml 中注册)  * <receiver androi ...

  2. 在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色

    今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小 ...

  3. Android代码中动态设置图片的大小(自动缩放),位置

    项目中需要用到在代码中动态调整图片的位置和设置图片大小,能自动缩放图片,用ImageView控件,具体做法如下: 1.布局文件 <RelativeLayout xmlns:android=&qu ...

  4. 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定

    最近在做今日头条WP的过程中,遇到需要动态生成Pivot项的问题.第一个版本是把几个频道写死在xaml里了,事件绑定也写在xaml里,每个频道绑定一个ObservableCollection<A ...

  5. 【WPF】XAML引入资源和在C#代码中动态添加样式

    转载自: http://blog.csdn.net/honantic/article/details/48781543 XAML引入资源参考这里: http://blog.csdn.net/qq_18 ...

  6. [K/3Cloud] 如何代码中动态设置当前活动页签

    this.GetControl<TabControl>(key).SelectedIndex=目标Index Ps:如下方式隐藏页签: this.View.GetControl(" ...

  7. 代码中动态改变布局属性RelativeLayout.LayoutParams.addRule()

    我们知道,在 RelativeLayout 布局中有很多特殊的属性,通常在载入布局之前,在相关的xml文件中进行静态设置即可. 但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的 ...

  8. c#字符串代码,动态创建编译器

    https://www.cnblogs.com/mrma/p/3998679.html 试了,确实可行,在unity也能用 值得注意的是UnityScript.Scripting.Evaluator ...

  9. BroadcastReceiver监听电量变化

    用BroadcastReceiver监听电量的变化,可以实现BroadcastReceiver接收电量变化的广播,然后获取电量百分比信息. BatteryChangedReceiver.java pu ...

随机推荐

  1. 学习MongoDB 六: MongoDB查询(游标操作、游标信息)(三)

    一.简介 db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段.并返回到匹配文档的游标,可以随意修改查询限制.跳跃.和排序顺序的 ...

  2. maven快速入门之安装

    maven是基于项目对象模型(pom) 可以通过y一小段描述信息来管理项目的构建,报告,和文档的软件项目管理工具. 覆盖编译,测试运行清理构建周期,提供仓库的概念,统一帮助管理项目. 下载:http: ...

  3. node使用MySQL数据库

    内容: 1.node连接数据库 2.数据库常用操作 3.数据库实例 - 用户注册.登陆 1.node连接数据库 (1)下载mysql模块 (2)使用mysql模块连接数据库 let db=mysql. ...

  4. Python Twisted系列教程1:Twisted理论基础

    作者:dave@http://krondo.com/in-which-we-begin-at-the-beginning/  译者:杨晓伟(采用意译) 前言: 最近有人在Twisted邮件列表中提出诸 ...

  5. [CoentOS] MySQL删除和安装

    删除 MySQL yum remove mysql mysql-server mysql-libs mysql-server; find / -name mysql 将找到的相关东西delete掉(r ...

  6. hadoop命令帮助

    安装完hadoop后,在hadoop的bin目录下有一系列命令: container-executor hadoop hadoop.cmd hdfs hdfs.cmd mapred mapred.cm ...

  7. Python 3 学习笔记(2)

    输入输出 str() 函数人类可读,repr() 解释器可读 rjust() 靠右,ljust() 靠左,center() 居中.zfill() 填0. 名字空间 名字到对象的映射关系被称为名字空间. ...

  8. 将JDBC的resultSet映射到JavaBaen

    // 执行赋值后SQL,            rs=pstm.executeQuery();            //判断是否有返回结果,有下一行rs.next()方法为true          ...

  9. 实现Action的三种方式

    实现Action的三种方式: 1.普通类  一般采用此种方法 2.实现Action接口 3.继承ActionSupport类

  10. MongoDB 数据查询

    数据查询 基本查询 方法find():查询 db.集合名称.find({条件文档}) 方法findOne():查询,只返回第一个 db.集合名称.findOne({条件文档}) 方法pretty(): ...