2015-03-02 119 views

回答

0

您可以使用BroadcastReceiver在Internet連接更改時通知您的應用程序。

清單:

<receiver android:name="com.example.app.ConnectivityChangeReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

BroadcastReceiver本身:

public class ConnectivityChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (isOnline(context)) { 
     debugIntent(intent, "grokkingandroid"); 
     } 
    } 

    private boolean isOnline(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     return (netInfo != null && netInfo.isConnected()); 
    } 

    private void debugIntent(Intent intent, String tag) { 
     Log.v(tag, "action: " + intent.getAction()); 
     Log.v(tag, "component: " + intent.getComponent()); 
     Bundle extras = intent.getExtras(); 
     if (extras != null) { 
     for (String key: extras.keySet()) { 
      Log.v(tag, "key [" + key + "]: " + 
       extras.get(key)); 
     } 
     } 
     else { 
     Log.v(tag, "no extras"); 
     } 
    } 
} 

As in

More on BroadcastReceiver

+0

謝謝,但你讓我的問題錯了。我正在討論如何使用okhttp攔截器來統一網絡連接檢查。 – 2015-03-02 09:23:27

+0

也許這個問題還不夠清楚 – Gorcyn 2015-03-02 09:27:19

+0

也許你沒有看到okhttp標籤。 – 2015-03-02 09:34:47