2012-03-05 18 views
7

私はAndroidのチャットアプリケーションを開発しています。起動時にアプリケーションがサービスを起動します。サービスはチャットサーバーに接続します。なんらかの理由で接続が切断された場合、ユーザーはボタンをクリックしてreconnect()関数が呼び出されます。インターネットに自動的に再接続する

アプリケーションはモバイルデバイス上で実行されます。アプリケーションはWi-Fi経由でインターネットに接続します。自分の電話を歩いているユーザーがWi-Fiカバレッジエリアから出ると、接続が切断されます。そのような場合、私のアプリケーションが自動的にインターネットに再接続しようとします。あなたの意見でこれを行う最良の方法は何ですか?

答えて

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

+0

はい。ネットワーク状態が変化すると、システムはブロードキャストを送信します。 – XXX

+0

これは完璧に動作します!ありがとうございました! – mneri

関連する問題