2015-03-02 117 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