آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

چک کردن متصل بودن گوشی کاربر به اینترنت، در برنامه نویسی اندروید

در این مبحث، دو روش برای چک کردن اتصال به اینترنت را ارائه می کنیم. البته توصیه می شود که از روش اول استفاده کنید.

روش اول :

این روش، در کلید شماره 312 مورد استفاده قرار گرفته است و چنانچه یک پروژه اندروید ساخته شده با آن را می خواهید، به کلید (مبحث) مورد نظر مراجعه کنید.

قبل از هر چیز، باید اجازه های دسترسی زیر را به فایل AndroidManifest.xml از پروژه اندروید اضافه کنیم :


<uses-permission android:name="android.permission.INTERNET" />
<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();
                    }
                }
            }

دقت شود که در کد بالا، خط زیر، کدهایی است که در صورت درست بودن اتصال به اینترنت، می خواهیم اجرا شود :


new GetData().execute();

پس یک کلاس با نام GetData باید بسازید که حاوی کدهای لازم باشد (که اگر اتصال به اینترنت، درست بود، اجرا شود و در غیر این صورت، پیامی توسط روش Toast به کاربر نمایش داده شود.)

نحوه اجرا کردن کدهای کلاس NetCheck (ساخت شیء (object) از روی این کلاس و سپس اجرا کردن کدهای آن)، برای چک کردن اینترنت، به صورت زیر می باشد :


new NetCheck().execute();

روش دوم :

با استفاده از تابع زیر می توانیم چک کنیم که آیا گوشی کاربر به اینترنت متصل است یا نه :


private boolean isNetworkConnected() { // check internet connection
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_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

بنابراین اگر می خواهیم کدی بنویسیم که مربوط به اینترنت است، باید آنها را به صورت کلی زیر بنویسیم :


if(isNetworkConnected()){ // check internet connection
    // your codes
}

که در آن، باید به جای عبارت // your codes ، کدهای مورد نظرمان را بنویسیم.

نویسنده علیرضا گلمکانی
شماره کلید 287
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)