版權聲明:本文為博主原創文章,未經博主允許不得轉載。
廣播的實現:發送者和接受者
靜態廣播與動態廣播 具體實現:在安卓軟件程序中,靜態廣播都可以接收到發送者的信息,然而動態廣播軟件程序中他后臺關閉后,不能接受到發送者的信息。
發送者 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(); //設置廣播的名字(設置Action) intent.setAction("com.example.android20_sender.1008");}public void send(View view){ String content=et_main_content.getText().toString(); //攜帶數據 intent.putExtra("data",content); //發送廣播(無序廣播) //sendBroadcast(intent); //發送黏性廣播 sendStickyBroadcast(intent);}}
靜態廣播清單文件配置 
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號接受者收到廣播了:”+data); } } }
動態廣播要用到黏性廣播(已過時,可以用),解決后臺關閉后,接受發送者的信息,動態廣播的優先級大于靜態廣播
在發送者清單文件中添加發送黏性廣播的權限 
動態廣播跟靜態差不多,只是不在清單文件中配置,用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(); //動態注冊廣播 registerReceiver(myReceived02,intentFilter);}@Overrideprotected void onDestroy() { super.onDestroy(); //注銷動態廣播 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號接受者收到粘性廣播了:”+data); } } }
系統廣播 
添加接受者電話的狀態 
接受者的電話狀態 public class MyPhoneState extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(“android.intent.action.PHONE_STATE”.equals(intent.getAction())){ //獲取電話號碼 String number=intent.getStringExtra(“incoming_number”); Log.i(“test”,”有電話進來了,”+number); Toast.makeText(context, “電話進來了:”+number, Toast.LENGTH_SHORT).show();
//獲取電話狀態 //電話管理者 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; } }}}
新聞熱點
疑難解答