版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
廣播的實(shí)現(xiàn):發(fā)送者和接受者
靜態(tài)廣播與動(dòng)態(tài)廣播 具體實(shí)現(xiàn):在安卓軟件程序中,靜態(tài)廣播都可以接收到發(fā)送者的信息,然而動(dòng)態(tài)廣播軟件程序中他后臺(tái)關(guān)閉后,不能接受到發(fā)送者的信息。
發(fā)送者 public class MainActivity extends AppCompatActivity {
PRivate EditText et_main_content;private Intent intent;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_content = (EditText) findViewById(R.id.et_main_content); intent = new Intent(); //設(shè)置廣播的名字(設(shè)置Action) intent.setAction("com.example.android20_sender.1008");}public void send(View view){ String content=et_main_content.getText().toString(); //攜帶數(shù)據(jù) intent.putExtra("data",content); //發(fā)送廣播(無序廣播) //sendBroadcast(intent); //發(fā)送黏性廣播 sendStickyBroadcast(intent);}}
靜態(tài)廣播清單文件配置 
java代碼接受者 public class MyReceived01 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(“com.example.android20_sender.1008”.equals(intent.getAction())){ String data=intent.getStringExtra(“data”); Log.i(“test”,”01號(hào)接受者收到廣播了:”+data); } } }
動(dòng)態(tài)廣播要用到黏性廣播(已過時(shí),可以用),解決后臺(tái)關(guān)閉后,接受發(fā)送者的信息,動(dòng)態(tài)廣播的優(yōu)先級(jí)大于靜態(tài)廣播
在發(fā)送者清單文件中添加發(fā)送黏性廣播的權(quán)限 
動(dòng)態(tài)廣播跟靜態(tài)差不多,只是不在清單文件中配置,用Java代碼 public class MainActivity extends AppCompatActivity {
private MyReceived02 myReceived02;private IntentFilter intentFilter;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myReceived02 = new MyReceived02(); intentFilter = new IntentFilter(); intentFilter.addAction("com.example.android20_sender.1008");}@Overrideprotected void onResume() { super.onResume(); //動(dòng)態(tài)注冊(cè)廣播 registerReceiver(myReceived02,intentFilter);}@Overrideprotected void onDestroy() { super.onDestroy(); //注銷動(dòng)態(tài)廣播 unregisterReceiver(myReceived02);}}
Java代碼接受者 public class MyReceived02 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(“com.example.android20_sender.1008”.equals(intent.getAction())){ String data=intent.getStringExtra(“data”); Log.i(“test”,”02號(hào)接受者收到粘性廣播了:”+data); } } }
系統(tǒng)廣播 
添加接受者電話的狀態(tài) 
接受者的電話狀態(tài) public class MyPhoneState extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(“android.intent.action.PHONE_STATE”.equals(intent.getAction())){ //獲取電話號(hào)碼 String number=intent.getStringExtra(“incoming_number”); Log.i(“test”,”有電話進(jìn)來了,”+number); Toast.makeText(context, “電話進(jìn)來了:”+number, Toast.LENGTH_SHORT).show();
//獲取電話狀態(tài) //電話管理者 TelephonyManager tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int state=tm.getCallState(); switch (state) { case TelephonyManager.CALL_STATE_RINGING: Log.i("test","表白前"); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i("test","熱戀中"); break; case TelephonyManager.CALL_STATE_IDLE: Log.i("test","失戀了"); break; } }}}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注