BroadcastrReceiver廣播可以在不同的APP之間發(fā)廣播,以便不同的app之間進行通信。兩個app之間通過廣播進行通信的時候,發(fā)送廣播的一方不必去新建BroadcastrReceiver,只需要發(fā)送廣播就行了。
發(fā)送端APP代碼如下
Intent intent=new Intent();
//setAction就是指設置這條廣播的描述信息,描述一下是做什么的,這個參數(shù)是自定義的
intent.setAction("com.aodlanucher.intent.startCall");
//setPackage就是指設置這條廣播發(fā)給的指定app的包名,必須設置包名
intent.setPackage("com.example.myapplication");
//intent是可以攜帶一些信息的,key-value的形式,自己定義key值
String[] s=new String[2];
s[0]="2";
s[1]="13343289929";
intent.putExtra("boardInfo",s);
//activity下屬的方法,發(fā)送廣播
sendBroadcast(intent);
接收端APP首先需要寫一個響應廣播的廣播類,這里必須重寫onReceive方法,里面包含響應廣播后需要執(zhí)行的操作。
public class BoardCastReciever extends BroadcastReceiver {
@SuppressLint({"WrongConstant", "ShowToast"})
@Override
public void onReceive(Context context, Intent intent) {
String[] s=intent.getStringArrayExtra("boardInfo");
//取一下intent中所攜帶的參數(shù)
if(s!=null){
Toast.makeText(context, "收到上個的廣播"+s[0]+s[1],1).show();
}
else {
Toast.makeText(context, "收到上個的廣播",1).show();
}
//啟動app的Activity
Intent intent1=new Intent(context,MainActivity.class);
context.startActivity(intent1);
}
}
如果想要廣播生效,也就是能響應發(fā)來的信息
需要配置<AndroidMainifest文件>
<receiver
android:name=".BoardCastReciever"
>
<intent-filter>
//這里的action name 就是發(fā)送廣播時自定義的字段,必須設置
<action android:name="com.aodlanucher.intent.startCall" />
</intent-filter>
</receiver>