Android Studio 學習(三) 廣播

來源:互聯網
上載者:User

標籤:接收   取消   xtend   adc   over   man   tin   許可權   public   

動態註冊監聽網路變化
  • 建立intentFilter 並addAction 代表了監聽哪個廣播
  • 然後使用registerReceiver()方法 將intentFilter 與 自己建立的監聽器 傳進去
  • 動態註冊的 需要unregisterReciver()
  • 許可權需要在Mainfest中聲明 <uses-permission android :name "android.permission.ACCESS_NETWORK.STATE"/>

public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangedReceiver networkChangedReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangedReceiver = new NetworkChangedReceiver();
registerReceiver(networkChangedReceiver,intentFilter);
}

@Overrideprotected void onDestroy() {    super.onDestroy();    unregisterReceiver(networkChangedReceiver);}class NetworkChangedReceiver extends BroadcastReceiver{    @Override    public void onReceive (Context context,Intent intent)    {        ConnectivityManager connectivityManager =                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();        if(networkInfo!=null && networkInfo.isAvailable())        {            Toast.makeText(context,"good",Toast.LENGTH_LONG).show();        }        else        {            Toast.makeText(context,"bad",Toast.LENGTH_LONG).show();        }    }}

}

靜態註冊實現開機啟動
  • new-> other->broadcast receiver 手動建立廣播
  • exported 允許此廣播接收本程式外的廣播

之後再Mainfest中聲明許可權
並說明要監聽的廣播

發送廣播
  • Intent intent = new Intent("com....")
  • sendBroadcast(intent);
  • sendOrderedBroadcast(intent,null); 發送有序廣播

  • <intent- filter android :priority="100">//設定廣播優先順序
  • abortBroadcast() 截斷廣播

本地廣播

public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private LocalReceiver localReceiver;
private LocalBroadcastManager localBroadcastManager;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //得到本地廣播管理器的執行個體    localBroadcastManager = LocalBroadcastManager.getInstance(this);    //動態註冊本地廣播接收器    intentFilter = new IntentFilter();    intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");    localReceiver = new LocalReceiver();    localBroadcastManager.registerReceiver(localReceiver, intentFilter);    //發送本地廣播    Button button = (Button) findViewById(R.id.button);    button.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");            localBroadcastManager.sendBroadcast(intent);        }    });}@Overrideprotected void onDestroy() {    super.onDestroy();    //取消動態網路變化廣播接收器的註冊    localBroadcastManager.unregisterReceiver(localReceiver);}class LocalReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();    }}

}

Android Studio 學習(三) 廣播

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.