最近我在网上学了Android中的一个知识点叫广播,广播分为自定义广播接受者和发送者。 配置广播接受者: 1.在清单文件中配置(静态广播) 2.使用java 代码(动态广播)
静态广播(那个先安装那个先接受到)
动态广播(是没有打开就接受不到,打开才能接收到) 优先级:动态大于静态
黏性广播(这个解决了动态广播没有打开就接受不到的问题,只不过已经过时了) 要添加发送黏性广播的权限
<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; } }新闻热点
疑难解答