https://developer.android.com/guide/components/broadcasts
一 广播接收者
Broadcast Receiver
二 广播类型
1 普通广播 通过 Context.sendBroadcast (intent)
2有序广播 通过 Context.sendOrderedBroadcase(intent,receiverPermission)
2.1截断广播 abortBroadcast
3 异步广播 context.sendStickyBroadcast(intent)
sendStickyOrderedBroadcase
三 监听广播
1 写一个类继承 Broadcast Receiver
2 重写 onReceive
3 SMSBroadReceivrer 注册广播接收者
1 静态注册
<receiver>
</receiver>
2 动态注册
IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED")
registerReceiver(mBatteryInfoReceiver.intentFilter)
取消注册
unregisterReceier(receiver)
四
广播生命周期只有10秒
注册广播
<receiver android:name=".MyBroad">
<intent-filter>
<action android:name="com.yifei.myapplication.MyBroad"
/>
</intent-filter>
</receiver>
发送广播
btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.yifei.myapplication.MyBroad");
sendBroadcast(intent);
}
});
接收广播
//创建广播接收者
public class MyBroad extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(MainActivity.TAG, "onReceive: ");
}
}
动态注册 以及销毁广播
package com.yifei.myapplication;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
public static String TAG ="MainActivity12";
private Button btn,btn1;
private MyService myService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//发送广播
Intent intent =new Intent(MyService.receiver);
sendBroadcast(intent);
}
});
//动态注册广播 接收者
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MyService.receiver);
myService = new MyService();
registerReceiver(myService, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myService);
}
}
广播
public class MyService extends BroadcastReceiver {
public static final String receiver ="com.yifei.myapplication.MyService";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(MainActivity.TAG, "onReceive: MyService");
}
}