2012-03-05 129 views
7

我正在开发Android聊天应用程序。启动时,应用程序启动一项服务。该服务连接到聊天服务器。如果由于某种原因导致连接断开,用户可以点击一个按钮并调用reconnect()函数。自动重新连接到互联网

该应用程序在移动设备上运行。该应用程序通过Wi-Fi连接到互联网。如果用户使用他的手机走出Wi-Fi覆盖区域,则连接关闭。在这种情况下,我希望我的应用程序自动尝试重新连接到Internet。你认为做这件事的最好方法是什么?

回答

6

添加的体现:

... 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET">   </uses-permission> 
... 
    <receiver android:name=".Internet" android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 
... 

接收机:

package YourPackage; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 

    public class Internet extends BroadcastReceiver 
    {  
     @Override 
     public void onReceive(final Context context, Intent intent) 
     { 
      if (intent.getAction().equalsIgnoreCase("android.net.conn.CONNECTIVITY_CHANGE")) 
      { 
       if isInternet(context) 
       { 
        // Your Code 
       } 
      }  
     } 

     public boolean isInternet(Context context) 
     { 
      ConnectivityManager IM = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetworkInfo = IM.getActiveNetworkInfo(); 
      return activeNetworkInfo != null; 
     }  
    } 
+0

是广播由Android环境自动发送? – mneri 2012-03-05 11:49:04

+0

是的。系统会在网络状态发生变化时发送广播。 – XXX 2012-03-05 11:57:38

+0

完美的作品!谢谢! – mneri 2012-03-05 12:02:22