Android監聽網路的變化

來源:互聯網
上載者:User

Android中網路情況時有變化,比如從有網到沒網,從wifi到gprs,gprs又從cmwap到cmnet...等等!
如果你的程式有些功能是需要網路支援的,有時候就需要監聽到網路的變化情況進行相應的處理。
比如說下載一個檔案,如果突然斷網了,怎麼處理?網路又恢複了,如何監聽到並重連?
 
當網路變化的時候系統會發出義個廣播broadcast,只要在程式中註冊一個廣播接收器BroadcastReceiver,並在IntentFilter中添加相應的過濾,這樣一旦網路有變化,程式就能監聽到
  public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
  private void registerDateTransReceiver() {
 Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
 IntentFilter filter = new IntentFilter();
 filter.addAction(CONNECTIVITY_CHANGE_ACTION);
 filter.setPriority(1000);
 registerReceiver(new MyReceiver(), filter);
 }
在MyReceiver中:
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.i(TAG, "PfDataTransReceiver receive action " + action);
        if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//網路變化的時候會發送通知
            Log.i(TAG, "網路變化了");
            return;
        }
    }
當網路變化時,從有網到沒網也會發廣播,就舉的例子來說,如果下載時斷網了,接收到廣播的時候要判斷當前網路是可用還是不可用狀態,如果可用進行什麼操作;不可用進行什麼操作:
    public static NetworkInfo getActiveNetwork(Context context){
        if (context == null)
            return null;
        ConnectivityManager mConnMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (mConnMgr == null)
            return null;
        NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 擷取活動網路連接資訊
        return aActiveInfo;
    }

這個方法返回的aActiveInfo可以判斷網路的有無,如果返回的是null,這時候是斷網了,如果返回對象不為空白,則是連上了網。在返回的NetworkInfo對象裡,可以有對象的方法擷取更多的當前網路資訊,比如是wifi還是cmwap等,就不多說了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.