„Android“ patikrinkite interneto ryšį

Noriu sukurti programą, kuri naudojasi internetu, ir bandau sukurti funkciją, kuri patikrintų, ar ryšys yra prieinamas, ir jei ne, eikite į veiksmą, kuriame yra pakartojimo mygtukas ir paaiškinimas.

Iki šiol pridedamas mano kodas, bet gaunu klaidos pranešimą „ Syntax error, insert "}" to complete MethodBody.

Dabar aš juos sukūriau, bandydamas tai padaryti, bet iki šiol ne sėkmės ... Bet kokia pagalba būtų vertinama.

 public class TheEvoStikLeagueActivity extends Activity { private final int SPLASH_DISPLAY_LENGHT = 3000;  @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); private boolean checkInternetConnection() { ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE); // ARE WE CONNECTED TO THE NET if (conMgr.getActiveNetworkInfo() != null  conMgr.getActiveNetworkInfo().isAvailable()  conMgr.getActiveNetworkInfo().isConnected()) { return true;  new Handler().postDelayed(new Runnable() { public void run() {  Intent mainIntent = new Intent(TheEvoStikLeagueActivity.this, IntroActivity.class); TheEvoStikLeagueActivity.this.startActivity(mainIntent); TheEvoStikLeagueActivity.this.finish(); } }, SPLASH_DISPLAY_LENGHT); } else { return false; Intent connectionIntent = new Intent(TheEvoStikLeagueActivity.this, HomeActivity.class); TheEvoStikLeagueActivity.this.startActivity(connectionIntent); TheEvoStikLeagueActivity.this.finish(); } } } 
177
05 марта '12 в 19:30 2012-03-05 19:30 iamlukeyb yra nustatytas kovo 05d. 12 val. 19:30 2012-03-05 19:30
@ 20 atsakymų

Šis metodas patikrina, ar mobilusis telefonas yra prijungtas prie interneto, ir grąžina teisingą, jei jis prijungtas:

 private boolean isNetworkConnected() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo() != null; } 

į manifestą

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Redaguoti: šis metodas tikrina, ar įrenginys prijungtas prie interneto (galima prisijungti prie tinklo, bet ne prie interneto).

 public boolean isInternetAvailable() { try { InetAddress ipAddr = InetAddress.getByName("google.com"); //You can replace it with your name return !ipAddr.equals(""); } catch (Exception e) { return false; } } 
344
05 марта '12 в 19:34 2012-03-05 19:34 atsakymą pateikė Seshu Vinay kovo 5 d. 12 d. 19:34

Įsitikinkite, kad jis prijungtas prie tinklo:

 public boolean isNetworkAvailable(Context context) { final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); return connectivityManager.getActiveNetworkInfo() != null  connectivityManager.getActiveNetworkInfo().isConnected(); } 

Įsitikinkite, kad jis prijungtas prie tinklo:

 public boolean isInternetAvailable() { try { final InetAddress address = InetAddress.getByName("www.google.com"); return !address.equals(""); } catch (UnknownHostException e) { // Log error } return false; } 

Reikalingas leidimas:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

ngn-wiki.ru.site/questions/13922 / ...

67
20 апр. Atsakė Jared Burrows balandžio 20 d 2013-04-20 23:35 '13, 23:35, 2013-04-20 23:35

Galite tiesiog pinguoti internetinę svetainę, pvz., „Google“:

 public boolean isConnected() throws InterruptedException, IOException { final String command = "ping -c 1 google.com"; return Runtime.getRuntime().exec(command).waitFor() == 0; } 
41
09 дек. atsakymas pateikiamas razzak 09 dec. 2015-12-09 13:03 '15, 13:03 val. 2015-12-09 13:03

Minėti metodai veikia, kai esate prijungti prie „Wi-Fi“ šaltinio arba mobiliojo telefono duomenų paketų. Tačiau Wi-Fi ryšio atveju yra atvejų, kai prašoma prisijungti, kaip ir kavinėje. Tokiu atveju jūsų programa nepavyks, nes esate prisijungę prie „Wi-Fi“ šaltinio, bet ne prie interneto.

Šis metodas veikia gerai.

  public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager)context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); if (activeNetwork != null  activeNetwork.isConnected()) { try { URL url = new URL("http://www.google.com/"); HttpURLConnection urlc = (HttpURLConnection)url.openConnection(); urlc.setRequestProperty("User-Agent", "test"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(1000); // mTimeout is in seconds urlc.connect(); if (urlc.getResponseCode() == 200) { return true; } else { return false; } } catch (IOException e) { Log.i("warning", "Error checking internet connection", e); return false; } } return false; } 

Naudokite jį atskirai nuo pagrindinio gijos, nes jis skambina ir sukels „NetwrokOnMainThreadException“, jei nebus laikomasi.

Ir taip pat nedėkite šio metodo „OnCreate“ ar kitokiu būdu. Įdėkite jį klasėje ir pasiekite ją.

24
06 февр. Atsakymą pateikė Bhargav Jhaveri 06 vasaris. 2014-02-06 08:48 '14 at 8:48 2014-02-06 08:48

Priimtas atsakymas EDIT rodo, kaip patikrinti, ar kažkas gali būti padaryta internete. Turėjau per ilgai laukti atsakymo, kai taip nebuvo (su „Wi-Fi“, kuris neturi interneto ryšio). Deja, „InetAddress.getByName“ nėra parametro „timeout“ parametras, todėl šis kodas veikia aplink:

 private boolean internetConnectionAvailable(int timeOut) { InetAddress inetAddress = null; try { Future<InetAddress> future = Executors.newSingleThreadExecutor().submit(new Callable<InetAddress>() { @Override public InetAddress call() { try { return InetAddress.getByName("google.com"); } catch (UnknownHostException e) { return null; } } }); inetAddress = future.get(timeOut, TimeUnit.MILLISECONDS); future.cancel(true); } catch (InterruptedException e) { } catch (ExecutionException e) { } catch (TimeoutException e) { } return inetAddress!=null  !inetAddress.equals(""); } 
15
16 дек. Atsakymas suteiktas Hans 16 dec. 2015-12-16 22:48 '15, 10:48 pm 2015-12-16 22:48

Negalite sukurti metodo kitame metode, perkelti private boolean checkInternetConnection() { metodas iš onCreate

14
05 марта '12 в 19:32 2012-03-05 19:32 atsakymas pateikiamas MByD kovo 5 d. 12 val. 19:32 2012-03-05 19:32

Jei norite patikrinti savo interneto ryšį, galite naudoti šį fragmentą.

Naudinga, kad galėtumėte patikrinti, kokio tipo NETWORK Connection yra prieinamas, kad galėtumėte padaryti savo procesą taip.

Jums reikia tiesiog nukopijuoti kitą klasę ir įklijuoti ją tiesiai į paketą.

  public class InternetConnection {  public static boolean checkConnection(Context context) { final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connMgr.getActiveNetworkInfo(); if (activeNetworkInfo != null) { // connected to the internet Toast.makeText(context, activeNetworkInfo.getTypeName(), Toast.LENGTH_SHORT).show(); if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) { // connected to wifi return true; } else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) { // connected to the mobile provider data plan return true; } } return false; } } 

Dabar galite naudoti abu:

 if (InternetConnection.checkConnection(context)) { // Its Available... } else { // Not Available... } 

NEGALIMA PASKIRTI KLAUSIMĄ :) :)

 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

Galite keisti pagal jūsų reikalavimą.

Ačiū.

13
21 окт. atsakymą pateikė Pratik Butani spalio 21 d. 2015-10-21 13:04 '15, 13:04 2015-10-21 13:04

Visi oficialūs metodai rodo tik tai, ar prietaisas yra atviras tinklui, ar ne.
Jei jūsų įrenginys prijungtas prie „Wi-Fi“, tačiau „Wi-Fi“ nėra prijungtas prie interneto, šis metodas neveiks (tai įvyksta daug kartų). Nėra integruoto tinklo aptikimo metodo, jis pasakys apie šį scenarijų, todėl sukurta „Async“ atgalinio ryšio kategorija, kuri bus grąžinta į „ OnConnectionSuccess“ ir „ onConnectionFail“

  new CheckNetworkConnection(this, new CheckNetworkConnection.OnConnectionCallback() { @Override public void onConnectionSuccess() { Toast.makeText(context, "onSuccess()", toast.LENGTH_SHORT).show(); } @Override public void onConnectionFail(String msg) { Toast.makeText(context, "onFail()", toast.LENGTH_SHORT).show(); } }).execute(); 

Tinklo skambinimas iš asinchroninės užduoties

 public class CheckNetworkConnection extends AsyncTask<Void, Void, Boolean> { private OnConnectionCallback onConnectionCallback; private Context context; public CheckNetworkConnection(Context con, OnConnectionCallback onConnectionCallback) { super(); this.onConnectionCallback = onConnectionCallback; this.context = con; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Boolean doInBackground(Void... params) { if (context == null) return false; boolean isConnected = new NetWorkInfoUtility().isNetWorkAvailableNow(context); return isConnected; } @Override protected void onPostExecute(Boolean b) { super.onPostExecute(b); if (b) { onConnectionCallback.onConnectionSuccess(); } else { String msg = "No Internet Connection"; if (context == null) msg = "Context is null"; onConnectionCallback.onConnectionFail(msg); } } public interface OnConnectionCallback { void onConnectionSuccess(); void onConnectionFail(String errorMsg); } } 

Faktinė klasė, kurioje bus ping

 class NetWorkInfoUtility { public boolean isWifiEnable() { return isWifiEnable; } public void setIsWifiEnable(boolean isWifiEnable) { this.isWifiEnable = isWifiEnable; } public boolean isMobileNetworkAvailable() { return isMobileNetworkAvailable; } public void setIsMobileNetworkAvailable(boolean isMobileNetworkAvailable) { this.isMobileNetworkAvailable = isMobileNetworkAvailable; } private boolean isWifiEnable = false; private boolean isMobileNetworkAvailable = false; public boolean isNetWorkAvailableNow(Context context) { boolean isNetworkAvailable = false; ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); setIsWifiEnable(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()); setIsMobileNetworkAvailable(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()); if (isWifiEnable() || isMobileNetworkAvailable()) {  if (isOnline()) isNetworkAvailable = true; } return isNetworkAvailable; } public boolean isOnline() {  long t = Calendar.getInstance().getTimeInMillis(); 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(); } finally { long t2 = Calendar.getInstance().getTimeInMillis(); Log.i("NetWork check Time", (t2 - t) + ""); } return false; } } 
8
17 нояб. atsakymą pateikė Lokesh Tiwari lapkričio 17 d. 2015-11-17 21:23 '15, 21:23, 2015-11-17 21:23

Nereikia būti sudėtinga. Paprasčiausias ir skeleto būdas yra naudoti ACCESS_NETWORK_STATE leidimą ir tiesiog prijungti metodą

 public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo() != null  cm.getActiveNetworkInfo().isConnectedOrConnecting(); } 

Taip pat galite naudoti requestRouteToHost jei turite tam tikrą kompiuterio ir ryšio tipą (wifi / mobilusis).

Jums taip pat reikės:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

„Android“ manifeste.

Daugiau informacijos rasite čia

7
11 июля '14 в 10:56 2014-07-11 10:56 atsakymas pateikiamas Xar E Ahmer liepos 14 d. 14 d. 10:56 2014-07-11 10:56

Naudokite šį metodą:

 public static boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); return netInfo != null  netInfo.isConnectedOrConnecting(); } 

Tai reikalinga raiška:

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
6
19 дек. Iman Marashi atsakymas gruodžio 19 d 2015-12-19 18:39 '15, 18:39 2015-12-19 18:39

Pabandykite naudoti šį kodą:

 public static boolean isNetworkAvailable(Context context) { boolean outcome = false; if (context != null) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] networkInfos = cm.getAllNetworkInfo(); for (NetworkInfo tempNetworkInfo : networkInfos) {  if (tempNetworkInfo.isConnected()) { outcome = true; break; } } } return outcome; } 
4
05 марта '12 в 19:58 2012-03-05 19:58 atsakymą pateikė Praful Bhatnagar, kovo 05 '12, 19:58 2012-03-05 19:58

parodoje

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

kodą

 public static boolean isOnline(Context ctx) { if (ctx == null) return false; ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null  netInfo.isConnectedOrConnecting()) { return true; } return false; } 
3
30 дек. Atsakymas pateikiamas R00We, gruodžio 30 d. 2014-12-30 10:59 '15, 10:59 2014-12-30 10:59

Naudokite šį kodą, kad patikrintumėte savo interneto ryšį.

 ConnectivityManager connectivityManager = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); if ((connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE) != null  connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED) || (connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null  connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI) .getState() == NetworkInfo.State.CONNECTED)) { return true; } else { return false; } 
2
17 марта '15 в 15:29 2015-03-17 15:29 atsakymas suteikiamas Fahim kovo 17 d., 15 val. 15:29 2015-03-17 15:29
 public boolean checkInternetConnection(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { return false; } else { 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; } 
2
22 янв. Atsakymą pateikė Ashish Saini sausio 22 d 2014-01-22 08:16 '14, 8:16 2014-01-22 08:16

Po „grąžinimo“ pareiškimo, negalite rašyti jokio kodo (išskyrus „try-end“ bloką). Perkelkite naujus veiklos kodus prieš „grąžinimo“ operacijas.

2
28 мая '13 в 16:09 2013-05-28 16:09 atsakymas duotas Burhan ARAS gegužės 28, 13 d. 4:09 2013-05-05 16:09

Tikrinti tinklą Prieinama „Android“ su interneto duomenų sparta.

 public boolean isConnectingToInternet(){ ConnectivityManager connectivity = (ConnectivityManager) Login_Page.this.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) { try { HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); urlc.setRequestProperty("User-Agent", "Test"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(500); //choose your own timeframe urlc.setReadTimeout(500); //choose your own timeframe urlc.connect(); int networkcode2 = urlc.getResponseCode(); return (urlc.getResponseCode() == 200); } catch (IOException e) { return (false); //connectivity exists, but no internet. } } } return false; } 

Ši funkcija grąžina tikrą ar klaidingą. Reikalingas vartotojo leidimas

  <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
1
15 апр. Atsakymas duotas Md Imran Choudhury balandžio 15 d 2015-04-15 10:25 '15, 10:25 2015-04-15 10:25

1 - sukurti naują java failą (dešiniuoju pelės klavišu spustelėkite paketą. Naujas> klasė> pavadinkite failą ConnectionDetector.java

2 - į failą pridėkite šį kodą

 package <add you package name> example com.example.example; import android.content.Context; import android.net.ConnectivityManager; public class ConnectionDetector { private Context mContext; public ConnectionDetector(Context context){ this.mContext = context; } public boolean isConnectingToInternet(){ ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); if(cm.getActiveNetworkInfo() != null  cm.getActiveNetworkInfo().isConnected() == true) { return true; } return false; } } 

3 - atidarykite MainActivity.java - veiksmą, kuriame norite išbandyti ryšį, ir atlikite šiuos veiksmus.

A- sukurti ir apibrėžti funkciją.

 ConnectionDetector mConnectionDetector;</pre> 

„B“ viduje „OnCreate“ pridėkite:

 mConnectionDetector = new ConnectionDetector(getApplicationContext()); 

c- Norėdami išbandyti ryšį, atlikite šiuos veiksmus.

 if (mConnectionDetector.isConnectingToInternet() == false) { //no connection- do something } else { //there is connection } 
1
31 авг. Bahi Husseino atsakymas, rugpjūčio 31 d. 2014-08-31 02:41 '14, 2:41 am 2014-08-31 02:41

Turėjau problemų su atsakymu „IsInternetAvailable“, kuris nebuvo išbandytas mobiliesiems tinklams, bet tik kai buvo prijungtas „Wi-Fi“. Šis atsakymas veikia tiek „Wi-Fi“, tiek mobiliesiems duomenims:

Kaip patikrinti ryšį ar išjungti tinklo ryšį WIFI ir 3G (duomenų planas) mobiliajame telefone?

1
21 дек. Atsakymą pateikė „ RedPanda “ gruodžio 21 d. 2014-12-21 00:24 '14 ne 0:24 2014-12-21 00:24

Tai dar vienas būdas valdyti visą situaciją:

 public void isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); if (activeNetworkInfo != null  activeNetworkInfo.isConnected()) { } else { Toast.makeText(ctx, "Internet Connection Is Required", Toast.LENGTH_LONG).show(); } } 
1
08 авг. Zafer Celaloglu atsakymas 08 rug . 2014-08-08 09:49 '14 ne 9:49 2014-08-08 09:49

Čia yra funkcija, kurią naudoju kaip „ Utils klasės dalį:

 public static boolean isNetworkConnected(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); return (cm.getActiveNetworkInfo() != null)  cm.getActiveNetworkInfo().isConnectedOrConnecting(); } 

Naudokite jį kaip: Utils.isNetworkConnected(MainActivity.this);

1
22 мая '14 в 8:15 2014-05-22 08:15 atsakymą pateikė Mahendra Liya , gegužės 22 d. 14, 8:15 2014-05-22 08:15

Kiti klausimai apie „ ir „ Klauskite“