本例为动态创建广播接收者即不是在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. 关于json_encode()的使用注意

    json_encode($json_str,true)在一般情况下可以返回一个数组,但当$json_str的字符编码是GBK或其它时,返回的是一个 空数组,必须用iconv(‘gbk’,‘ut8//I ...

  2. 第11课 enum、sizeof、typedef 分析

    1. enum枚举类型 1.1 使用方法 (1)enum是C语言中的一种自定义类型 (2)enum值是可以根据需要自定义的的整型值 (3)第一个定义的enum值默认为0. (4)默认情况下的enum值 ...

  3. ffmpeg 播放音频

    播放音频,设置好SDL_AudioSpec播放参数,然后由SDL回调函数进行解码和数据的拷贝,解码播放音频无需设置延迟,因为声卡播放音频是阻塞的 int audio_decode_frame(AVCo ...

  4. laravel 5.3 ——路由(资源,别名)

    laravel的路由定义中,其中route:resoure(),可以直接定义类似restful风格的URL 例如:Route::resource('system/role','System\RoleC ...

  5. PHP mysqli_autocommit() 函数

    定义和用法 mysqli_autocommit() 函数开启或关闭自动提交数据库修改. 提示:请查看 mysqli_commit() 函数,用于提交指定数据库连接的当前事务.请查看 mysqli_ro ...

  6. css3网站收集

    把群里大家推荐的网站做了下收集,等有时间了研究下 1.http://icomoon.io/app/  这个网站用来生成跟导出字体图标的,自带的图标种类很多很丰富,基本够用了,不过你也可以自己设计,然后 ...

  7. Win7关机时弹出对话框,提示你想要的信息

    博主换了个公司,要求每天写日志,次日8点前没写的话就要扣钱,1篇10块钱,博主已经两次写完忘记提交到ERP系统了,捂脸... 因为公司要求所有工作在公司配的台式电脑上,所以如果能在关机前弹个提示(不关 ...

  8. django之python网站开发基础

    原文:http://www.cnblogs.com/feixuelove1009/p/5823135.html 一.Django简介 百度百科:开放源代码的Web应用框架,由Python语言编写... ...

  9. VS2015+Opencv半永久配置

    电脑W7 64位+VS2015+opencv3.0 刚开始学习opeencv很麻烦,配置的问题都弄了好久,一旦重装又出现很多问题,在网上看了一个论坛说的永久配置,特意记录一下! 第一步:下载openc ...

  10. uva-639-枚举

    题意: 象棋里的車可以吃横竖的車,题目加了一个墙,用于阻断攻击,问4x4的棋盘最多可以放多少只車, 思路:枚举每一个点,2^16次方种情况 #include<stdio.h> #inclu ...