写这篇博客的目的首先偶是预防以后自己忘了可以随时拿出来看,其次 能帮到一些人也是不错的..
1.android中的广播分为:
①标准广播
特点: 广播发出后所有的接收器都可以 同时 接收到 广 播, 而且无法拦截
②有序广播
特点:广播发出之后,接收者有先后之分,并且前面的接收者可以拦截广播,导致后面的接收的接收不到
2.广播是通过一方发送另一方接收的,发送的一方只需要给Intent一个意图,像”com.xu.text”,然后调用sendBroadcast(intent)方法就可以了(有序广播调用sendOrderedBroadcast(intent,null);),接收广播者(让一个类继承BroadcastReceiver,然后实现BroadcastReceiver的onReceice()方法即可,广播内容在该方法中操作)
3.广播有俩种注册方式:
静态注册(AndroidManifest.xml中)
动态注册(代码实现)
动态注册:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button) findViewById(R.id.btn);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent("com.example");
sendBroadcast(intent);
}
}
这里通过点击Button发送一条广播,发送广播的代码很简单,
Intent intent=new Intent("com.example");
sendBroadcast(intent);
前面讲了
接收广播:
在另一个Module的Activity中:
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private BroadcastTest broadcast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter=new IntentFilter();
//选择要接收哪个广播 意图添加进去,保持一致
intentFilter.addAction("com.example");
broadcast=new BroadcastTest();
registerReceiver(broadcast,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcast);
}
class BroadcastTest extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "收到其他应用的广播",
Toast.LENGTH_SHORT).show();
}
}
}
registerReceiver();方法用来接收广播,里面需要俩个参数,一个BroadcastReceiver,一个IntentFilter,把这俩个对象传进去..广播的内容会在BroadcastReceiver执行具体处理,动态注册要记得取消注册广播,在onDestory()中 unregisterReceiver(broadcast);取消注册
静态注册:
在AndroidManifest.xml中,
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example"/>
intent-filter>
receiver>
enabled表示是否允许启用这个广播接收器
exported表示是否允许接收本应用程序以外的广播 true表示允许
在android studio中可以点击file–new–Other—BraodcastReceiver直接创建一个广播接收者,AndroidManifest.xml中只需要把
<intent-filter>
<action android:name="com.example"/>
intent-filter>
意图写出来就可以了,发送方和动态一样…