بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چک کردن وضعیت اینترنت(لطفا جواب بدید)

مدیریت گفتگو
fatemeh 10 سال پیش
آخرین تغییر: 9 سال پیش

سلام

برای چک کردن اینترنت از این کد استفاده می کنم

  private static boolean isNetworkAvailable() {
try {
ConnectivityManager connectivityManager = (ConnectivityManager)
G.context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
catch (Exception e) {
e.printStackTrace();
}
return false;
}


public static boolean hasActiveInternetConnection() {
if (isNetworkAvailable()) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("https://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
// urlc.setConnectTimeout(1500);
// urlc.setConnectTimeout(3000);
urlc.setConnectTimeout(10000);

urlc.connect();

return (urlc.getResponseCode() == 200);
}
catch (IOException e) {
Log.i("log", " checking internet connection");

}
} else {
Log.i("log", "No network available!");

}
return false;
}

بعضی مواقع با اجرای برنامه صفحه گوشی سیاه میشه به نظر شما بهتره چکار کنم؟

و به جای آدرس گوگل از آدرس سایت خودم استفاده میکنم

نحوه استفاده در اکتیویتی هم به این صورته

 if (hasActiveInternetConnection()) {
//
//
}else{
//
}

نظرات

پاسخ‌ها 6

احمد 10 سال پیش

من از این توابع استفاده کردم

 private void checkconnect() {
		try {
			conMan = (ConnectivityManager) getSystemService(G.CurrentActivity.CONNECTIVITY_SERVICE);
			mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
					.getState();
			wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
					.getState();
			if (mobile == NetworkInfo.State.CONNECTED
					| mobile == NetworkInfo.State.CONNECTING) {
				new HttpAsyncTask().execute();

			} else if (wifi == NetworkInfo.State.CONNECTED
					| wifi == NetworkInfo.State.CONNECTING) {
				new HttpAsyncTask().execute();

			} else {
				G.selectMode = "offline";
				toast.Redtoast(ActivityMain.this, "Wifi or Gprs Disable :-(");
				// Login.this.finish();
			}
		} catch (Exception e) {
		}
	}

 

 

 	private class HttpAsyncTask extends AsyncTask<String, Void, String> {
		@Override
		protected String doInBackground(String... urls) {
			try {
				Boolean b = haveInternet();
				if (b) {
					return "ok";
				} else {
					return "no";
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return null;
		}

		@Override
		protected void onPostExecute(String result) {

			if (result == null | result.equals("no") | result.equals("")) {
				toast.Redtoast(ActivityMain.this, pleaseconnect);
				G.selectMode = "offline";
			} else {
				toast.Bluetoast(ActivityMain.this,
						"Internet is Enabled :-) ...");
				G.selectMode = "online";
				nodata();

			}

		}
	}

 

 	public boolean haveInternet() {

		Runtime runtime = Runtime.getRuntime();
		try {

			Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
			int exitValue = ipProcess.waitFor();
			return (exitValue == 0);

		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return false;
	}

نظرات

Reza 9 سال پیش
سلام ، ایمولیتور من به اینترنت وصله ( از طریق wifi ) ، ولی چرا در متد haveInternet مقدار exitValue برابر 2 میشه و در نتیجه خروجی متد ، false میشه ، یعنی اینترنت نداره ! کسی از این کدها استفاده کرده ؟
fatemeh 10 سال پیش

خانم بهار ممنون

میشه در این خط به جای گوگل برای اطمینان سایت خودمون رو پینگ کنیم

 Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");

نظرات

محسن 10 سال پیش

من از پینگ گوگل یا سایت دیگه استفاده کردم و متوجه شدم رو بعضی گوشی ها( مثل الکاتل) کار نمیکنه. این که یه  HttpURLConnection هم بزنی به مشکل میخوره بخاطر این که واسه تشخیص نت باید تایم اوت رو بیاری پایین و این باز با اینترنت های سرعت پایین مشکل دار میشه(تو چند جا هم خوندم که httpconnection ایده خوبی واسه این کار نیست)، اخر سر این تیکه کد کارم رو راه انداخت:


public static boolean readNetworkStatus(){
ConnectivityManager connectivity = (ConnectivityManager) G.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;
}

نظرات

fatemeh 10 سال پیش

دوستان من میخوام داده از سمت سرور بگیرم یا بفرستم باید اتصال به اینترنت رو چک کنم

مثلا اگر وای فای وصل باشه ولی اینترنت نداشته باشم اطلاعاتی که از سمت سرور میگیره به صورت کد html هستند به نظر شما بهتره از چه روشی استفاده کنم؟

نظرات

مسعود فرمانی 10 سال پیش

به این لینک یه نگاهی بندازید ===> لینک

نظرات

امید 9 سال پیش

دوستان تمام این روش هارو تست کردم و هیچکدوم درست جواب نمیده!!!

توی تمام این روش ها وصل بودن گوشی به شبکه بررسی میشه و در صورت وصل بودن به wifi و یا gprs/3g حالت شبکه رو وصل نشون میده.

اما اگر به یه wifi وصل باشی که اینترنت نداشته باشه به مشکل میخوری و این حالت رو نشون نمیده.

اگر کسی روشی میشناسه لطفا کمک کنه

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .