说明:
android手机存在各种各样的广播信息,
比如:手机刚启动时候的提示信息,电池电量警告提示信息,来电信息以及短信接收等许多方面的应用。
1.开发者自定义广播的要求:
1.所有广播都是以一个类的形式存在的;
2.广播的类必须是继承自BroadcastReceiver 类;
3.不需再AndroidMainfest.xml 中向Android 系统注册;
2.下面看看广播组件的结构:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//此处编写代码
}
}
3.广播的触发方式:
a.通过Activity程序的sendBroadcast()方法触发所有广播组件,再启动前必须判断用户传递的广播
是否是指定的Action类型,若是则进行广播。
I.Activity程序的sendBroadcast()方法的启动 (动态注册)
Intent intent = new Intent(Intent.ACTION_EDIT); // 启动Action
sendBroadcast(intent); //进行广播
II.广播类中对广播的处理
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcast extends BroadcastReceiver { // 继承自BroadcastReceiver 类
@Override
public MyBroadcast() { // 构造方法
System.out.println("每次广播都会实例化一个广播组件");
}
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//此处编写代码
Toast.makeText(context,"广播已经启动",Toast.LENGTH_LONG).show(); //显示信息
}
}
III.AndroidMainfest.xml 中注册广播组件 (静态注册)
<receiver //定义广播处理
android:name="MyBroadcast" //广播处理类
android:enabled="true"> //启用广播
<intent-filter > //匹配Action操作,之后进行广播 (广播的过滤配置信息)
<action android:name="android.intent.action_EDIT"/>
</intent-filter>
</receiver>
b.在Activity中自定义一个Action并传送数据到广播组件中去。
public Intent regiisterReceiver(BroadcastReceiver receiver,IntentFilter filter) //注册广播,并指定IntentFilter
public void unregiisterReceiver(BroadcastReceiver receiver) //注销指定的广播
配置AndroidMainfest.xml (静态注册)
<receiver android:name="MyBroadcast"
android:enabled="true">
<intent-filter> // 指定IntentFilter
<action android:name="org.lxh.action.GAJAH" /> // 包名路径+自定义(大写)
</intent-filter>
</receiver>
代码配置IntentFilter方法
public IntentFilter() //创建一个空的IntentFilter对象
public IntentFilter(String action) //创建一个IntentFilter对象,并指定Action
public final void addAction(String action) //增加一个要过滤的Action
public final void addCategory(String category) //增加一个要过滤的Category
public final boolean hasAction(String action) //判断指定的Action是否存在
public final boolean hasCategory(String category) //判断指定的Category是否存在
实例如下:
private BroadcastReceiver MyBroadcast = null ;// 广播接收者
Intent it = new Intent("org.lxh.action.GAJAH") ;// 指定Action
it.putExtra("msg", "传送附加信息到广播组件中"); // 附加数据
IntentFilter filter = new IntentFilter("org.lxh.action.GAJAH"); //创建一个IntentFilter对象,并指定Action
MyBroadcast = new ReceiveBroadcast() ;
registerReceiver(MyBroadcast, filter); // 注册广播 (动态注册)
sendBroadcast(it); // 进行广播
@Override
protected void onStop() {
super.unregisterReceiver(MyBroadcast) ; // 注销广播
super.onStop();
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadcast extends BroadcastReceiver { // 继承BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) { // 处理广播事件
if ("org.lxh.action.GAJAH".equals(intent.getAction())) { // 判断是指定的Action
String msg = intent.getStringExtra("msg") ; // 取得附加信息
Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); // 显示信息
}
}
}
c.通过BroadCast启动Service
说明:
Service也可以通过BroadCast启动,如果一个Service要通过Broadcast启动并没有任何特殊的操作,
只需要在Broadcast中调用startService()方法即可完成。
新建一个Service 服务:
public class MyServiceUtil extends Service { // 继承Service
@Override
public IBinder onBind(Intent intent) { // 绑定时触发
return null;
}
@Override
public void onCreate() { // 创建时触发
System.out.println("*** Service onCreate()");
super.onCreate();
}
@Override
public void onDestroy() { // 销毁时触发
System.out.println("*** Service onDestroy()");
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent,
int flags, int startId) { // 启动时触发
System.out.println("*** Service onStartCommand() Intent = " + intent);
return Service.START_CONTINUATION_MASK;
}
}
广播启动Service服务:
package org.lxh.demo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcastReceiverUtil extends BroadcastReceiver { // 继承BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, MyServiceUtil.class)); // 启动Service
}
}
android手机存在各种各样的广播信息,
比如:手机刚启动时候的提示信息,电池电量警告提示信息,来电信息以及短信接收等许多方面的应用。
1.开发者自定义广播的要求:
1.所有广播都是以一个类的形式存在的;
2.广播的类必须是继承自BroadcastReceiver 类;
3.不需再AndroidMainfest.xml 中向Android 系统注册;
2.下面看看广播组件的结构:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//此处编写代码
}
}
3.广播的触发方式:
a.通过Activity程序的sendBroadcast()方法触发所有广播组件,再启动前必须判断用户传递的广播
是否是指定的Action类型,若是则进行广播。
I.Activity程序的sendBroadcast()方法的启动 (动态注册)
Intent intent = new Intent(Intent.ACTION_EDIT); // 启动Action
sendBroadcast(intent); //进行广播
II.广播类中对广播的处理
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcast extends BroadcastReceiver { // 继承自BroadcastReceiver 类
@Override
public MyBroadcast() { // 构造方法
System.out.println("每次广播都会实例化一个广播组件");
}
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//此处编写代码
Toast.makeText(context,"广播已经启动",Toast.LENGTH_LONG).show(); //显示信息
}
}
III.AndroidMainfest.xml 中注册广播组件 (静态注册)
<receiver //定义广播处理
android:name="MyBroadcast" //广播处理类
android:enabled="true"> //启用广播
<intent-filter > //匹配Action操作,之后进行广播 (广播的过滤配置信息)
<action android:name="android.intent.action_EDIT"/>
</intent-filter>
</receiver>
b.在Activity中自定义一个Action并传送数据到广播组件中去。
public Intent regiisterReceiver(BroadcastReceiver receiver,IntentFilter filter) //注册广播,并指定IntentFilter
public void unregiisterReceiver(BroadcastReceiver receiver) //注销指定的广播
配置AndroidMainfest.xml (静态注册)
<receiver android:name="MyBroadcast"
android:enabled="true">
<intent-filter> // 指定IntentFilter
<action android:name="org.lxh.action.GAJAH" /> // 包名路径+自定义(大写)
</intent-filter>
</receiver>
代码配置IntentFilter方法
public IntentFilter() //创建一个空的IntentFilter对象
public IntentFilter(String action) //创建一个IntentFilter对象,并指定Action
public final void addAction(String action) //增加一个要过滤的Action
public final void addCategory(String category) //增加一个要过滤的Category
public final boolean hasAction(String action) //判断指定的Action是否存在
public final boolean hasCategory(String category) //判断指定的Category是否存在
实例如下:
private BroadcastReceiver MyBroadcast = null ;// 广播接收者
Intent it = new Intent("org.lxh.action.GAJAH") ;// 指定Action
it.putExtra("msg", "传送附加信息到广播组件中"); // 附加数据
IntentFilter filter = new IntentFilter("org.lxh.action.GAJAH"); //创建一个IntentFilter对象,并指定Action
MyBroadcast = new ReceiveBroadcast() ;
registerReceiver(MyBroadcast, filter); // 注册广播 (动态注册)
sendBroadcast(it); // 进行广播
@Override
protected void onStop() {
super.unregisterReceiver(MyBroadcast) ; // 注销广播
super.onStop();
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyBroadcast extends BroadcastReceiver { // 继承BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) { // 处理广播事件
if ("org.lxh.action.GAJAH".equals(intent.getAction())) { // 判断是指定的Action
String msg = intent.getStringExtra("msg") ; // 取得附加信息
Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); // 显示信息
}
}
}
c.通过BroadCast启动Service
说明:
Service也可以通过BroadCast启动,如果一个Service要通过Broadcast启动并没有任何特殊的操作,
只需要在Broadcast中调用startService()方法即可完成。
新建一个Service 服务:
public class MyServiceUtil extends Service { // 继承Service
@Override
public IBinder onBind(Intent intent) { // 绑定时触发
return null;
}
@Override
public void onCreate() { // 创建时触发
System.out.println("*** Service onCreate()");
super.onCreate();
}
@Override
public void onDestroy() { // 销毁时触发
System.out.println("*** Service onDestroy()");
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent,
int flags, int startId) { // 启动时触发
System.out.println("*** Service onStartCommand() Intent = " + intent);
return Service.START_CONTINUATION_MASK;
}
}
广播启动Service服务:
package org.lxh.demo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcastReceiverUtil extends BroadcastReceiver { // 继承BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, MyServiceUtil.class)); // 启动Service
}
}