android组件之一BroadCastReceiver

来源:互联网 发布:淘宝网兼职是真的吗 编辑:程序博客网 时间:2024/06/01 15:41
1.何为BroadCastReceiver 

在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收,开机与关机等等都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。


2.BroadCastReceiver的作用

例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等。


3.BroadCastReceiver的注册方式(用电话拨号器举例:)

第一种方式(静态注册):

1)第一步

public class CallReceiver extends BroadcastReceiver {


//广播接收者接收到广播是,次方法调用
@Override
public void onReceive(Context arg0, Intent arg1) {
// System.out.println("打电话来来");
//获取打电话广播中携带的号码
String number = getResultData();
SharedPreferences sp = arg0.getSharedPreferences("number", arg0.MODE_PRIVATE);
String ipNumber = sp.getString("ipNumber", "");
//把新的号码放入广播中
setResultData(ipNumber + number);
}


}

2)第二步

系统注册:在 AndroidManifest.xml 中注册
  <receiver android:name="cn.miwa.ipdial.CallReceiver">
            <intent-filter >
                <!-- 指定要用到系统的广播 -->
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
            
        </receiver>


<!-- 要用到的权限 -->

 <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>



第二种方式(动态注册):

// 广播接收者 - 广播的接收
private BroadcastReceiver callReceiver = new BroadcastReceiver() {
 
       @Override
       public void onReceive(Context context, Intent intent) {
           // 相关处理,如收短信,监听电量变化信息
       }
 
    };
 
代码中注册:
IntentFilter intentFilter = new IntentFilter( "android.intent.action.NEW_OUTGOING_CALL " );
registerReceiver( callReceiver  , intentFilter);


1 0
原创粉丝点击