day12 BroadCastReceiver安卓的广播接收者
BroadCastReceiver
广播接收者
简介
使用
BroadCastReceiver 广播接收者
简介
其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,
比如电量低或者充足,刚启动完,插入耳机,输入法改变等, 发生这些时间,系统都会发送广播,这个叫系统广播,
每个APP都会收到,如果你想让你的应用在接收到 这个广播的时候做一些操作,比如:系统开机后,偷偷后台跑服
务哈哈,这个时候你只需要为你的应用 注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就做写偷
偷摸摸的勾当~ 当然我们也可以自己发广播,比如:接到服务端推送信息,用户在别处登录,然后应该强制用户下
线回到 登陆界面,并提示在别处登录当然,这些等下都会写一个简单的示例帮大家了解广播给我们带来的好处
使用
创建一个广播接收者,创建一个类继承BroadcastReceiver
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Myreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
清单文件里写一个广播接收者
<!-- 接收者 -->
<receiver android:name=".Myreceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.zx"></action>
</intent-filter>
</receiver>
Java代码
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;
import com.example.day12.util.BroadcastConst;
import java.io.BufferedReader;
import java.io.FileFilter;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button sendId;
private MyReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendId = findViewById(R.id.send_id);
sendId.setOnClickListener(this);
//创建一个接收者
myReceiver = new MyReceiver();
//添加广播过滤器
IntentFilter intentFilter = new IntentFilter();
//添加action
intentFilter.addAction(BroadcastConst.ACTION);
//注册
registerReceiver(myReceiver,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销
unregisterReceiver(myReceiver);
}
}
无序广播
Intent intent = new Intent();
intent.setAction("com.feng.broad");
Bundle bundle = new Bundle();
bundle.putInt("msg",123);
intent.putExtras(bundle);
sendBroadcast(intent);
有序广播
Intent intent1 = new Intent();
intent1.setAction("com.feng.broad");
//第一个参数是intent 二是权限名.
sendOrderedBroadcast(intent1,null);