本例为动态创建广播接收者即不是在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. DIY-组装

    DIY:-组装 组装,现在基本什么都可以组装,就像计算机,手机,自己进行定制,同样操作系统可以自己组装,软件开发也要组装,现在就是一个DIY的时代. 大家了解DIY,说白了就是自己定制组装一些东西,比 ...

  2. django项目分页

    测试版本 代码: # 测试分页users=[{'name':'alex{}'.format(i),'pwd':'aaa{}'.format(i)}for i in range(1,302)] def ...

  3. Oracle 存储过程 延迟执行 DBMS_LOCK.SLEEP(60);

      --测试代码: declare -- Local variables here i integer; begin -- Test statements here dbms_output.put_l ...

  4. C# 方法中带默认值的参数

    设计一个方法的参数时,可为部分或全部参数分配默认值.然后,调用这些方法的代码可以选择不指定部分实参,接受其默认值.除此之外,调用方法时,还可通过指定参数名称的方式为其传递实参.以下代码演示了可选参数和 ...

  5. 隐藏bat脚本运行时弹出的黑窗口,以隐藏进程在后台执行.

    1.把这段代码写在前面@echo offif "%1"=="r" goto startif "%1"=="h" goto ...

  6. 代码: js日期

    日期格式化 (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2015-11-16 08:09:04.423 (new Dat ...

  7. openlayers3入门教程

                                                                                                        ...

  8. 11.使用ForwardAction实现页面屏蔽。

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 我们在jsp页面之间写链接总会是.../xxx.jsp,而如果我们想屏蔽掉具 ...

  9. Mysql 触发器 A表记录到B表

    1:查询出需要的列名 备用 #列名 select COLUMN_NAME from information_schema.columns where TABLE_SCHEMA='yunpiaobox_ ...

  10. 程序员教程-9章-C程序设计

    目录结构: 9.1 C语言基础 9.1.1 数据类型 1 基本数据类型 2 数组.字符数组与字符串 3 枚举类型 4 结构体.共用体和typedef 9.1.2 运算符与表达式 9.1.3 输入/输出 ...