2017-10-17 1 views
-2

私はアンドロイドで初心者です。私は、放送受信機が(可能であれば例を挙げて)何であるかを知りたいだけで、onReceive()メソッド上にあります。その受信機を使ってインターネット接続を確認する方法について説明します。ブロードキャスト受信機がインターネット接続を確認する

私はインターネット接続をチェックするか、Mainクラスで静的メソッドを作成し、それを他のクラスにアクセスするのに使うべきでしょうか?

答えて

1

私は最高のプログラマーではありませんが、これはうまくいくはずです。

これはフラグメント用ですが、 アクティビティでは簡単に変更することができます。あなたはbroadcastreceiverクラスMyBroadCastReceiverにあなたのフラグメントを登録し、これと

BroadcastReceiver br = new MyBroadCastReceiver(); 
IntentFilter filter = new IntentFilter(); 
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 
_mContext = getActivity().getApplicationContext() 
_mContext.registerReceiver(br, filter); 

:あなたのonCreate(中

Context _mContext; 
BroadcastReceiver br = null; 
IntentFilter filter; 

)これを貼り付けます。

最初の3つの変数を作ります。

今MyBroadCastReceiverクラスを作成し、このペースト:

public class MyBroadCastReceiver extends BroadcastReceiver { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 
         WifiManager.WIFI_STATE_UNKNOWN); 

    switch(extraWifiState) { 
     case: WifiManager.WIFI_STATE_DISABLED: 
     //do something 
     break; 
     case WifiManager.WIFI_STATE_ENABLED: 
     //do something 
     break; 
     case: WifiManager.WIFI_STATE_ENABLING: 
     //do something 
     break; 
     case: WifiManager.WIFI_STATE_DISABLING: 
     //do something 
     break; 
     case: WifiManager.WIFI_STATE_UNKNOWN: 
     //do something with data if you desire so, I found it unreliable until now so i've done nothing with it 
     } 
     } 
    }` 

があなたのフラグメントに戻って、一番下にこのどこかに貼り付けます。

@Override 
    public void onPause() { 
     try { 
      if (br == null) { 
       Log.d("Receiver", "Can't unregister a receiver which was never registered"); 
      } else { 
       getActivity().getApplicationContext().unregisterReceiver(br); 
       br = null; 
      } 
     } catch(Exception err) { 
      Log.e(err.getClass().getName(), err.getMessage(), err); 
      Log.e("Receiver not registered", "Couldn't get context"); 
     } 
     super.onPause(); 
    } 

    @Override 
    public void onResume() { 
     if(br != null) { 
      Log.d("Receiver", "Can't register receiver which already has been registered"); 
     } else { 
      try { 
       br = new MyBroadCastReceiver(); 
       filter = new IntentFilter(); 
       filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 
       filter.addAction(CONNECTIVITY_SERVICE); 
       _mContext = getActivity().getApplicationContext(); 
       _mContext.registerReceiver(br, filter); 
      } catch(Exception err) { 
       Log.e(err.getClass().getName(), err.getMessage(), err); 
      } 
     } 
     super.onResume(); 
    } 

は、あなたが登録を呼び出すことができるはず/登録解除このような放送はどこにでもあります。 私はこれが十分に

0
<receiver 
     android:name=".InternetConnectorBroadcastReceiver" 
     android:enabled="true"> 
     <intent-filter> 

      <!-- Intent filters for broadcast receiver --> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      <action android:name="android.net.wifi.STATE_CHANGE" /> 
     </intent-filter> 
    </receiver> 


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

public class InternetConnectionBroadcastReceiver extends BroadcastReceiver { 
     public InternetConnectorBroadcastReceiver() { 
     } 

     @Override 
     public void onReceive(Context context, Intent intent) { 
     } 

}

であると思います
関連する問題