最近我在网上学了Android中的一个知识点叫广播,广播分为自定义广播接受者和发送者。
配置广播接受者:
1.在清单文件中配置(静态广播)
2.使用java 代码(动态广播)
静态广播(那个先安装那个先接受到)
动态广播(是没有打开就接受不到,打开才能接收到)
优先级:动态大于静态
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myReceived02 = new MyReceived02();
intentFilter = new IntentFilter();
intentFilter.addAction("com.android_20_send.0802");
}
@Override
protected void onResume() {
super.onResume();
//注册动态广播
registerReceiver(myReceived02,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销动态广播
unregisterReceiver(myReceived02);
}
黏性广播(这个解决了动态广播没有打开就接受不到的问题,只不过已经过时了)
要添加发送黏性广播的权限
<uses-permission android:name="android.permission.BROADCAST_STICKY"></uses-permission>
只要改一行就行了
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_main_01 = (EditText) findViewById(R.id.et_main_01);
intent = new Intent();
//给广播起个名字
intent.setAction("zking.com.android_20_send.599");
}
public void exit(View view){
String context=et_main_01.getText().toString();
//传数据
intent.putExtra("data",context);
//发送广播(无序的广播)
// sendBroadcast(intent);
//发送黏性广播
sendStickyBroadcast(intent);
}
系统广播:
我自己在网上找了一个打电话的监听
首先你要加一个读取电话状态的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
然后:
判断是不是这个号码
if (“android.intent.action.PHONE_STATE”.equals(intent.getAction())){
//获取电话号码
String phone=intent.getStringExtra(“incoming_number”);
Log.i(“test”,”有电话进来了,”+phone);
//获取电话管理者
TelephonyManager manager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//得到电话的状态
int s=manager.getCallState();
switch (s) {
//电话打入
case TelephonyManager.CALL_STATE_RINGING:
break;
//电话接通
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
//电话挂断
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}