广播(BroadCast)综合

黎震博
2023-12-01

1.实现简单的IP拨号

package cn.itcast.ipcall;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

public class OutGoingCallReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		System.out.println(getResultData());
		//abortBroadcast();
		 SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
		 String ipnumber = sp.getString("ipnumber", "");
		 
		 
		 setResultData(ipnumber+getResultData());
	}

}

 <receiver android:name=".OutGoingCallReceiver" >
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
        </receiver>

其他说明

在android操作系统里面 会有很多的广播事件.BroadCastRecevier 



BroadCastRecevier  有两种注册方式 
1. 清单文件里注册:  一旦应用程序被部署到手机, 广播接受者就会生效


2. 代码里面注册: 一旦代码所在的进程被杀死了, 广播接受者就失效了.






广播接受者分为两种类型:
1. 有序的广播. 短信到来的广播 电话拨打的广播 
-1000~1000  设置广播的优先级  
 android:priority="1000"


从高优先级->低优先级 依次传递 
abortbroadcast() 方法  可以终止广播事件 




2. 无序广播.
没有优先级 任何人 注册广播接受者的人,都可以接收到广播.
没有abortboradcast()方法 


sendBroadcast(intent); // 发送一条广播 
sendOrderedBroadcast(intent, receiverPermission); // 发送一条有序广播






 sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras)
如果发送广播的时候 使用的 上面的api发送出去的广播 
第三个参数 resultReceiver 指定了广播的接受者.



即便是中间我把广播给终止 abortbroadcast() 
resultReceiver 还是会接受到广播时间 




setResultData(null);

 类似资料: