چک کردن وضعیت اینترنت(لطفا جواب بدید)
سلام
برای چک کردن اینترنت از این کد استفاده می کنم
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{
//
}
من از این توابع استفاده کردم
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; }
خانم بهار ممنون
میشه در این خط به جای گوگل برای اطمینان سایت خودمون رو پینگ کنیم
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
من از پینگ گوگل یا سایت دیگه استفاده کردم و متوجه شدم رو بعضی گوشی ها( مثل الکاتل) کار نمیکنه. این که یه 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;
}
دوستان من میخوام داده از سمت سرور بگیرم یا بفرستم باید اتصال به اینترنت رو چک کنم
مثلا اگر وای فای وصل باشه ولی اینترنت نداشته باشم اطلاعاتی که از سمت سرور میگیره به صورت کد html هستند به نظر شما بهتره از چه روشی استفاده کنم؟
دوستان تمام این روش هارو تست کردم و هیچکدوم درست جواب نمیده!!!
توی تمام این روش ها وصل بودن گوشی به شبکه بررسی میشه و در صورت وصل بودن به wifi و یا gprs/3g حالت شبکه رو وصل نشون میده.
اما اگر به یه wifi وصل باشی که اینترنت نداشته باشه به مشکل میخوری و این حالت رو نشون نمیده.
اگر کسی روشی میشناسه لطفا کمک کنه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .