2012-03-05 128 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