چک کردن متصل بودن گوشی کاربر به اینترنت، در برنامه نویسی اندروید
در این مبحث، دو روش برای چک کردن اتصال به اینترنت را ارائه می کنیم. البته توصیه می شود که از روش اول استفاده کنید.
روش اول :
این روش، در آموزش شماره 312 مورد استفاده قرار گرفته است و چنانچه یک پروژه اندروید ساخته شده با آن را می خواهید، به کلید (مبحث) مورد نظر مراجعه کنید.
قبل از هر چیز، باید اجازه های دسترسی زیر را به فایل AndroidManifest.xml از پروژه اندروید اضافه کنیم :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
سپس در Activity ، یک کلاس (class) به صورت زیر تعریف می کنیم :
* Async Task to check whether internet connection is working.
**/
private class NetCheck extends AsyncTask<String,String,Boolean>
{
private ProgressDialog nDialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
nDialog = new ProgressDialog(MainActivity.this);
nDialog.setTitle("Checking Network");
nDialog.setMessage("Loading..");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
}
/**
* Gets current device state and checks for working internet connection by trying Google.
**/
@Override
protected Boolean doInBackground(String... args){
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
@Override
protected void onPostExecute(Boolean th){
if(th == true){
nDialog.dismiss();
new GetData().execute();
}
else{
nDialog.dismiss();
Toast.makeText(getApplicationContext(), "Error in Network Connection", Toast.LENGTH_SHORT).show();
}
}
}
دقت شود که در کد بالا، خط زیر، کدهایی است که در صورت درست بودن اتصال به اینترنت، می خواهیم اجرا شود :
پس یک کلاس با نام GetData باید بسازید که حاوی کدهای لازم باشد (که اگر اتصال به اینترنت، درست بود، اجرا شود و در غیر این صورت، پیامی توسط روش Toast به کاربر نمایش داده شود.)
نحوه اجرا کردن کدهای کلاس NetCheck (ساخت شیء (object) از روی این کلاس و سپس اجرا کردن کدهای آن)، برای چک کردن اینترنت، به صورت زیر می باشد :
روش دوم :
با استفاده از تابع زیر می توانیم چک کنیم که آیا گوشی کاربر به اینترنت متصل است یا نه :
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
دقت شود که دو خط زیر را باید به کدهای فایل AndroidManifest.xml پروژه اندروید اضافه کنیم (افزودن اجازه های دسترسی) :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
بنابراین اگر می خواهیم کدی بنویسیم که مربوط به اینترنت است، باید آنها را به صورت کلی زیر بنویسیم :
// your codes
}
که در آن، باید به جای عبارت // your codes ، کدهای مورد نظرمان را بنویسیم.