Android中BroadcastReceiver广播
BroadCastReceiver 简介
广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 Context.sendBroadcast() 、 Context.sendOrderedBroadcast() 来实现的。通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者所接收。
广播是一种广泛运用的在应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件;
来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。
BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以启动 Activity 作为响应,或者通过 NotificationMananger 提醒用户,或者启动 Service 等等。
生命周期
编写类继承BroadcastReceiver,复写onReceiver()方法
package com.example.receive;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceivceReg extends BroadcastReceiver {
private static final String TAG = "MyReceivce";
public MyReceivceReg(){
Log.i(TAG,"MyReceivceReg"); }
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG,"onReceiveReg");
}
}
<receiver android:name="com.example.receive.MyReceivce">
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
要接收某些action,需要在AndroidManifest.xml里面添加相应的permission。例如接收SMS:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
……
</manifest>
界面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".AndroidBroadcastServiceActivity" > <Button
android:id="@+id/btnStartBroad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="启动Broadservice"
>
</Button> <Button
android:id="@+id/btnRegisterBroad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册RegisterBroad"
>
</Button> <Button
android:id="@+id/btnUnRegisterBroad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消RegisterBroad"
>
</Button> </LinearLayout>
构建Intent,发送
package com.example.androidbroadcastservice; import com.example.receive.MyReceivceReg; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class AndroidBroadcastServiceActivity extends Activity {
protected static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";//广播类型。其实是对应Manifest.xml中<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
private Button btnStartBroad,btnRegisterBroad,btnUnRegisterBroad;
private MyReceivceReg receivece;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_broadcast_service);
btnStartBroad = (Button) this.findViewById(R.id.btnStartBroad);
btnStartBroad.setOnClickListener(onclick); btnRegisterBroad = (Button) this.findViewById(R.id.btnRegisterBroad);
btnRegisterBroad.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
receivece=new MyReceivceReg();
IntentFilter filter=new IntentFilter();
filter.addAction(ACTION);
registerReceiver(receivece, filter);
}
}); btnUnRegisterBroad = (Button) this.findViewById(R.id.btnUnRegisterBroad);
btnUnRegisterBroad.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
//MyReceivceReg receivece=new MyReceivceReg();
//IntentFilter filter=new IntentFilter(ACTION);
unregisterReceiver(receivece);
}
});
}
private OnClickListener onclick = new OnClickListener() { @Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(ACTION);
sendBroadcast(intent);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_android_broadcast_service,
menu);
return true;
} }
Android中BroadcastReceiver广播的更多相关文章
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中的广播
Android中的广播 广播接受器,可以比喻成收音机.而广播则可以看成电台. Android系统内部相当于已经有一个电台 定义了好多的广播事件,比如外拨电话 短信到来 sd卡状态 电池电量变化... ...
- Android 中的广播(Broadcast)
Android 广播(broadcast) 饮水思源 本文章内容学习和总结自 郭霖大神:<Android第一行代码> Overview 就像我们的学校里的喇叭一样,是用来通知的.而Andr ...
- Android 中的广播机制
Android 中的广播机制 Android 中的广播,按照广播响应范围,可以分为应用内广播和全局广播.按照广播的接收方式,可以分为标准广播和有序广播. 广播的分类 响应范围 应用内广播:此类广播只能 ...
- Android中的广播Broadcast详解
今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...
- Android笔记(二十六) Android中的广播——BroadcastReceiver
为了方便进行系统级别的消息通知,Android有一套类似广播的消息机制,每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能是来自于系统,也可能是来自于 ...
- android中的广播接收实现总结
1 首先根据广播应用内接收和应用外接收,分两个类进行管理[1] LocalBroadcastManager,应用内广播管理类[2] BroadcastManager 广播管理类(部分应用内,应用 ...
- Android的BroadcastReceiver 广播 短信拦截
如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...
- Android中使用广播机制退出多个Activity
谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...
随机推荐
- FreeRTOS和Ucos在任务优先级的区别
而ucos的任务优先级是任务优先级的数组越小,任务优先级越高.和STM32的中断优先级保持一样的分析,和freeRTOS相反.
- BI先特技软件 Analyzer安装时的部分问题
废话不多,先看第一个问题,我先运行了 Analyzer.3.0.2357b.64.exe 然后就是傻瓜式地下一步 好的,现在问题来了,当我运行安装完毕的Analyzer时,页面给了我这样的提示“ HT ...
- hander消息机制原理
基本原理 线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程通过MainLoope ...
- Oracle中的Temporary tablespace的作用
临时表空间主要用途是在数据库进行排序运算[如创建索引.order by及group by.distinct.union/intersect/minus/.sort-merge及join.analyze ...
- Java多线程2:Thread中的实例方法
Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...
- 【星路演】DeviceOne:跨平台APP开发平台
视频 DeviceOne是一个跨Android.IOS.Windows三个平台的一个PAAS平台,主要是提供给开发者一个节省70%的成本一个开发. 我们原来想做一个APP,我们会去找三个平台的原生人员 ...
- Yii CModel中rules验证规则[转]
array( array(‘username’, ‘required’), array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12), array( ...
- 《OOC》笔记(3)——C语言变长参数va_list的用法
<OOC>笔记(3)——C语言变长参数va_list的用法 C语言中赫赫有名的printf函数,能够接受的参数数目不固定,这就是变长参数.C#里也有params这个关键字用来实现变长参数. ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>中,我介绍了获取AccessToken(通用接口)的方法. 在实际的开发过程中,所有的高级接口都需 ...
- redis系列-redis的连接
Redis 是完全开源免费的,遵守BSD协议,先进的key - value持久化产品.它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list ...