本例为动态创建广播接收者即不是在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. Open Live writer 远程博客管理客户端

    1.  官网地址:http://openlivewriter.org/ 点击download下载:https://openlivewriter.azureedge.net/stable/Release ...

  2. win10的坑之wifi找不到

    安装了win10一周以来,win10的坑太多太多,微软搞什么pc/mobile二合一,真是脑残行为. 首先是usb设备无缘无故找不到,据说是和杀毒软件/防火墙有关,后来是关掉了windows defe ...

  3. win10下多版本apache(2.2,2.4)+php(5.3.5,5.5.37,5.6.25,7.0.8)注意点

    1.Loaded Configuration File 问题: apache2.2 httpd PHPIniDir D:\php5.3.5\php.ini AddType application/x- ...

  4. CYQ.Data 轻量数据层之路 使用篇二曲 MAction 数据查询(十三)----002

    原文链接:https://blog.csdn.net/cyq1162/article/details/53303390 前言说明: 本篇继续上一篇内容,本节介绍所有相关查询的使用. 主要内容提要: 1 ...

  5. xrange

    range返回一个列表 xrange反会xrange这个类的实例,每次遍历返回一个值.比range的执行效率要高 在python3中range = xrange range(1,10,2)     - ...

  6. UVA699-落叶-二叉树

    1:用一根数轴,根结点是坐标index,左结点-1,右结点+1 还有一个0ms的不知道怎么过的 #include<stdio.h> #include<iostream> #in ...

  7. spring mvc 解决json 不能转换的问题

    在要转的实体上加一个 @JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" ...

  8. 视频地址blog加密

    /* JS部分 没处理兼容什么的 */ var id='<?php echo $_GET['id'];?>'; var video = document.getElementById(&q ...

  9. VBA 连接文本的自定义函数(可用于数组公式)

    Function ConTxt(ParamArray args() As Variant) As VariantDim tmptext As Variant, i As Variant, cellv ...

  10. Spring boot @PropertySource, @ImportResource, @Bean

    @PropertySource:加载指定的配置文件 /** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类 ...