《第一行代碼》5章 動態註冊監聽網絡變化

注意:

  1. 需要在配置文件中 增加訪問網絡的權限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     

  2. 主要就是重寫onReceiver();首先需要註冊

  3. 增加幾個新類:BroadcastReceiver

    package com.example.broadcasttest;

    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.widget.Toast;

    public class MainActivity extends Activity {
        private IntentFilter intentFilter;
        private NetworkChangeReceiver networkChangeReceiver;
        private TextView textView;
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            intentFilter = new IntentFilter();
            intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
            networkChangeReceiver = new NetworkChangeReceiver();
            registerReceiver(networkChangeReceiver,intentFilter);//註冊廣播接收器,接收CONNECTIVITY_CHANGE這個廣播
            textView=(TextView) findViewById(R.id.tv);
        }
        @Override
        protected void onDestroy(){
            super.onDestroy();
            unregisterReceiver(networkChangeReceiver);
        }
        class NetworkChangeReceiver extends BroadcastReceiver{
            @Override
            public void onReceive(Context context,Intent intent){
            //    Toast.makeText(context, "network changes", Toast.LENGTH_LONG).show();
                //Log.d("demo","networkchanges");
            //    textView.setText("netWorkChanges");
                ConnectivityManager connectionManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);//
                NetworkInfo networkInfo=connectionManager.getActiveNetworkInfo();
                if (networkInfo != null && networkInfo.isAvailable()){
                    Toast.makeText(context, "network is available", Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
                }
                
            }
        }

    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章