プロジェクトを開発したいのですが、このプロジェクトでは常にインターネットを使用します。インターネット接続が失われると、ユーザーに警告が表示され、画面が一時停止します。インターネットが利用可能になると、ユーザーはアプリの以前の状態から続行できます。私はAndroidプログラミングが初めてです.. THREADS を使用することを考えていますが、よくわかりません。スレッドを使用する必要がありますか、それとも何か提案がありますか? コメントありがとうございます。
3 に答える
たとえばConnection
、いくつかのカスタム間隔で利用可能かどうかを確認する必要があります。したがって、次のコードスニペットを使用できます。
private boolean isConnectionAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
接続が利用可能かどうかを確認します。それが戻ってくるなら、あなたは意味のあるものか何かfalse
を示すことができます。AlertDialog
次に、権限を追加する必要があります。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
そして、いくつかの間隔でそれをチェックするために、あなたはあなたの目標AlarmManager
のために使うことができます、つまりThreads
、TimerTask
より良い解決策は、ブロードキャスト レシーバーを に登録することですConnectivityManager.CONNECTIVITY_ACTION
。はonReceive()
、接続に変更が発生するたびに呼び出されます。現在ConnectivityManager.EXTRA_NO_CONNECTIVITY
、接続が利用できないことを示すフィールドがあります。その値を確認して、ロジックの必要に応じて続行できます。お役に立てれば。
これは、通常、インターネット接続をチェックする方法です。Android
private boolean checkInternetConnection()
{
ConnectivityManager manager = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
boolean gprs=manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
if (is3g || isWifi)
{
Log.v(TAG,"3G/WIFI connection is present");
return true;
}
else if(gprs)
{
Log.v(TAG,"gprs connection is present");
return true;
}
return false;
}
に適切な権限を追加する必要がありますAndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
これに使う必要はないと思いますThreads
。
詳細については、ConnectivityManagerforAndroidを参照してください。