私のアプリケーションでは、次のように定義されたクラスがあります。
public class ConnectionDetector {
private Context _context;
public ConnectionDetector(Context context){
this._context = context;
}
/**
* Checking for all possible internet providers
* **/
public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
}
また、接続ステータスを確認する必要があるアクティビティでは、次を使用します。
// DEFINE THIS AS A GLOBAL VARIABLE
AlertDialogManager alert = new AlertDialogManager();
でonCreate()
:
ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
// Check if Internet present
if (!cd.isConnectingToInternet()) {
// Internet Connection is not present
alert.showAlertDialog(MainActivity.this, "Internet Connection Error",
"Please connect to working Internet connection", false);
// stop executing code by return
return;
}
おー。ほとんど忘れてしまった。インターネットをアクティブ化するためにユーザーを設定パネルにリダイレクトする必要がある場合は、次のようなインテントを使用できます。
AlertDialogでユーザーにプロンプトを表示し、必要に応じてユーザーに選択させることができます。はいの場合は、このコードを実行します。
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);
編集:
私は明白なことを見逃しました(Commonswareは彼のコメントでそれを指摘しました)。
マニフェストファイルにACCESS_NETWORK_STATE権限を追加する必要があります。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />