最近我在網上學了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;
}
}