Android cihazın internete bağlı olup olmadığını tespit etmem gerekiyor.
NetworkInfosınıfı, kulağa mükemmel gelen statik olmayan bir
isAvailable()` yöntemi sağlar.
Sorun şu ki:
NetworkInfo ni = new NetworkInfo();
if (!ni.isAvailable()) {
// do something
}
bu hatayı atar:
The constructor NetworkInfo is not visible.
Güvenli bahis, bir NetworkInfo
nesnesi döndüren başka bir sınıf olmasıdır. Ama hangisi olduğunu bilmiyorum.
ConnectivityManagerın
getActiveNetworkInfo()yöntemi, bulabildiği ilk bağlı ağ arabirimini temsil eden bir
NetworkInfoörneği veya arabirimlerin hiçbiri bağlı değilse
nulldöndürür. Bu yöntemin
null` döndürüp döndürmediğini kontrol etmek, bir internet bağlantısının mevcut olup olmadığını anlamak için yeterli olmalıdır.
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Ayrıca ihtiyacınız olacak:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
android manifestonuzda.
Düzenle:
Etkin bir ağ arayüzüne sahip olmanın belirli bir ağa bağlı hizmetin kullanılabilir olduğunu garanti etmediğini unutmayın. Ağ sorunları, sunucu kesintileri, düşük sinyal, tutsak portallar, içerik filtreleri ve benzerleri uygulamanızın bir sunucuya ulaşmasını engelleyebilir. Örneğin, Twitter hizmetinden geçerli bir yanıt alana kadar uygulamanızın Twitter'a erişip erişemediğinden emin olamazsınız.
Ayrıca bir başka önemli not. Bunun çalışması için AndroidManifest.xml dosyanızda android.permission.ACCESS_NETWORK_STATE
ayarını yapmanız gerekir.
_ çevrimiçi belgelerde ihtiyacım olan bilgileri kendim nasıl bulabilirdim?
Sadece sınıfların dokümantasyonunu yeterince iyi okumalısınız ve aradığınız tüm cevapları bulacaksınız. ConnectivityManager]1 ile ilgili belgelere göz atın. Açıklama size ne yapmanız gerektiğini söyler.
Muhtemelen kendimi buldum:
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
return connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();