本例为动态创建广播接收者即不是在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. Storm集成Kafka的Trident实现

      原本打算将storm直接与flume直连,发现相应组件支持比较弱,topology任务对应的supervisor也不一定在哪个节点上,只能采用统一的分布式消息服务Kafka.   原本打算将结构设 ...

  2. Spark学习笔记4:数据读取与保存

    Spark对很多种文件格式的读取和保存方式都很简单.Spark会根据文件扩展名选择对应的处理方式. Spark支持的一些常见文件格式如下: 文本文件 使用文件路径作为参数调用SparkContext中 ...

  3. 长沙雅礼中学集训-------------------day3

    今天的收获还是蛮大的,终于体会了一波在知识的海洋中遨游的美滋滋的快感. T1:给你N个点的位置和他们的速度,这些点向一个方向移动,求前M次超越者的集合A和被超越者的集合B(集合为这些点的速度),以及从 ...

  4. Python中的logger和handler到底是个什么鬼

    最近的任务经常涉及到日志的记录,特意去又学了一遍logging的记录方法.跟java一样,python的日志记录也是比较繁琐的一件事,在写一条记录之前,要写好多东西.典型的日志记录的步骤是这样的: 创 ...

  5. python学习之----异常处理小示例

    网络是十分复杂的.网页数据格式不友好,网站服务器宕机,目标数据的标签找不到,都 是很麻烦的事情.网络数据采集最痛苦的遭遇之一,就是爬虫运行的时候你洗洗睡了,梦 想着明天一早数据就都会采集好放在数据库里 ...

  6. PHP写日志公共类

    Txl_Log.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * * ...

  7. js 获取上传文件的字节数及内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. sklearn的estimator

    estimator的工作流程 在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator.在估计器中有有两个重要的方法是fit和transform. fi ...

  9. PHP 程序员学数据结构与算法之《栈》

    “要成高手,必练此功”.   要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...

  10. Android手机与服务器(案例一) webservice

    1.服务端 建立webservice,增加方法gettime和sum. 测试正常8080端口,关闭防火墙. Start启动服务,并且OpenBrowser,XE6真是方便啊 http://localh ...