Android Connectivity Managerの詳細

2391 ワード

ConnectivityManagerクラスは、ネットワーク接続に関するステータスクエリに回答しました.また、ネットワーク接続が変化したときにアプリケーションに通知します.このクラスの一例Context.getSystemService(Context.CONNECTIVITY_SERVICE)は、以下の呼び出しによって得ることができる.
このクラスの主な役割は、
  • 監視ネットワーク接続(無線ネットワーク接続、GPRS、UMTS等)
  • 放送意図送信時のネットワーク接続の変化
  • が「フェイルオーバ」を別のネットワークにしようとすると、ネットワークに接続すると
  • が失われる.
  • はAPIを提供し、アプリケーションが利用可能なネットワークの粗粒または細粒状態
  • を問い合わせることを可能にする.
  • はAPIを提供し、彼らのデータトラフィックのアプリケーションの要求のために、ネットワーク
  • を選択することを許可する.
    次に、現在ネットワークが存在するか否かを判断するコードを例に挙げる(例は「第1行コード・第2版」から).
    方法
      getNetworkInfo(Network network)は、特定のネットワーク接続状態に関する情報を返す.
    注意:
    getSystemServiceはAndroidの重要なAPIであり、Activityの方法であり、受信したNAMEに基づいて対応するObjectを取得し、対応するサービスオブジェクトに変換する.システムに対応するサービスについて説明します.詳細:getSystemService詳細
    MainActivityファイル(外部パッケージを省略)
    public class MainActivity extends AppCompatActivity {
    
        private IntentFilter intentFilter;
        private NetworkChangeReceiver networkChangeReceiver;
    
        @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);
        }
    
        @Override
        protected void onDestroy(){
            super.onDestroy();
            unregisterReceiver(networkChangeReceiver);
        }
    
        class NetworkChangeReceiver 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,"network is available",Toast.LENGTH_SHORT).show();
                }
                else{
                    Toast.makeText(context,"network is unavailable",Toast.LENGTH_SHORT).show();
                }
    
            }
        }
    }
    また、ここでアクセスするシステムのネットワーク状態は、権限を宣言する必要があり、AndroidManifestを開く.xmlファイル、次のコードを追加します.