انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی اتصال به اینترنت در چند اکتیویتی، در برنامه نویسی اندروید

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

#11
من کدهایتان را در پروژه اندروید تست کردم (این بار برای اینکه ببینم درست اتصال اینترنت رو تشخیص میده یا نه). با مواردی که مورد بحث ما بود، مشکلی نداشت و در حالتی هم که به اینترنت متصل بودیم، درست کار می کرد، اما برای حالتی که من گوشیم را از شبکه wireless قطع می کردم، برنامه force close می داد. چون کدها شبیه کدهایی بود که من در سایت قرار داده بودم، قبلا فکر می کردم که عینا آنها را در پروژه اندروید خود قرار داده اید، اما اینگونه نبود و با تغییر دادن آنها، مشکلاتی به وجود آمده بود. بنابراین بنده بر اساس کلید زیر، کدها را تکمیل کردم :

http://www.kelidestan.com/keys/keys.php?key=2408

که البته قبلا اصل کدهای آن را در کلید زیر شرح داده بودیم (روش اول در این کلید) :

http://www.kelidestan.com/keys/keys.php?key=287

بنابراین بنده کل پروژه اندرویدی که ساختم و آن را در دو حالت وصل به اینترنت و عدم اتصال به اینترنت تست کرده ام را برایتان در پیوست این ارسال قرار دادم تا خودتان کدهای آن را بررسی کنید (نحوه اجرای کدهای آن مشخص است). فایل apk ساخته شده از آن را هم پیوست کرده ام.
اما بد نیست که خود کدها رو هم اینجا بنویسم :
کدهای کلاس (نام آن با کلاس شما فرق دارد) :

کد:
package com.kelidestan.newclass;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import junit.framework.TestCase;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.widget.Toast;

public class MyClass extends TestCase {
    
    public Context context;
        
    public MyClass (Context context) {
        this.context = context;  
    }
    
    public void ShowAlertDialog() {
         AlertDialog.Builder alertDialog = new AlertDialog.Builder(this.context);
         alertDialog.setTitle("Title");
         alertDialog.setMessage("No Internet");
         alertDialog.setIcon(R.drawable.ic_launcher);
         // Setting Positive "Yes" Button
         alertDialog.setPositiveButton("Yes (repeat check internet)",
         new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
                 dialog.cancel();
                 new NetCheck().execute();
             }
         });
         // Setting Negative "NO" Button
         alertDialog.setNegativeButton("No (cancel)",
         new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
                 // Write your code here to invoke NO event
                 dialog.cancel();
             }
         });
         // Showing Alert Message
         alertDialog.show();
    }

    /**
     * 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(context);
                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) context.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();
                    Toast.makeText(context.getApplicationContext(), "Your device is connected to internet !", Toast.LENGTH_SHORT).show();
                    context.startActivity(new Intent(context, MyActivity.class));
                    // new GetData().execute();
                }
                else{
                    nDialog.dismiss();
                    ShowAlertDialog();
                }
            }
        }
        
         public void CheckInternet() {
             new NetCheck().execute();
         }
        
        
}

کدهای Activity اصلی برنامه اندروید :

کد:
package com.kelidestan.newclass;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        MyClass myClass = new MyClass(this);
        myClass.CheckInternet();
    }


}

کدها را با دقت بررسی کنید. همچنین برنامه اندروید را هم در دو حالت اتصال و عدم اتصال به اینترنت چک کنید.



فایل‌های پیوست

دانلود NewClass_folder.zip

نام فایل NewClass_folder.zip
نوع فایل .zip
دفعات دانلود 346
اندازه 936.99 KB
ارسال کننده فایل admin

دانلود NewClass.apk

نام فایل NewClass.apk
نوع فایل .apk
دفعات دانلود 233
اندازه 265.19 KB
ارسال کننده فایل admin
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط ramtin2080


پیام‌های این موضوع
RE: بررسی اتصال به اینترنت در چند اکتیویتی، در برنامه نویسی اندروید - توسط admin - ۱۳۹۳/۰۸/۱۰, ۱۲:۰۴ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان