2009-11-15 18 views
7

मैं एंड्रॉइड डिवाइस पर उपलब्ध वर्तमान इंटरनेट कनेक्शन प्रकार कैसे निर्धारित कर सकता हूं? जैसे क्या यह वाईफाई, 3 जी, कोई नहीं लौटा है।एंड्रॉइड इंटरनेट कनेक्शन कैसे निर्धारित करें?

उत्तर

0

तुम भी TelephonyManager उपयोग कर सकते हैं पता लगाने के लिए क्या मोबाइल नेटवर्क प्रकार है:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
int networkType = telephonyManager.getNetworkType(); 

संभव नेटवर्क प्रकार पर http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkType%28%29

+0

वाईफ़ाई के लिए काम नहीं करता मदद करता है, यह करता है की कोशिश? – shkschneider

+0

नहीं, यही कारण है कि मैंने कहा कि "आप भी ..." अगर किसी को मोबाइल नेटवर्क के प्रकार के बारे में जानने की जरूरत है। कम से कम कुछ अन्य उत्तरों केवल यह कहते हैं कि कनेक्शन वाईफाई या मोबाइल है या नहीं। – Intrications

7

आप यह निर्धारित करने के लिए इसका उपयोग कर सकते हैं कि आप कनेक्ट हैं या नहीं:

final ConnectivityManager connectManager = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE); // ctx stands for the Context 
final NetworkInfo mobile = connectManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
final NetworkInfo wifi = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI ); 

// Return true if connected, either in 3G or wi-fi 
return ((mobile != null && mobile.getState() == NetworkInfo.State.CONNECTED) || 
     (wifi != null && wifi.getState() == NetworkInfo.State.CONNECTED) ); 
} 

इस कोड को ACCESS_NETWORK_STATE और ACCESS_WIFI_STATE अनुमति की आवश्यकता है।

EDIT: public NetworkInfo getNetworkInfo (int networkType)has been deprecated in API 21। 20 से अधिक आप कर सकते हैं API स्तरों के लिए इस प्रकार है:

final Network[] networks = connectManager.getAllNetworks(); 
boolean connected = false; 

for (int ctr = 0; !connected && ctr < networks.length; ++ctr) { 
    final NetworkInfo network = connectManager.getNetworkInfo(networks[ctr]); 
    final int netType = network.getType(); 

    connected = (network.getState() == NetworkInfo.State.CONNECTED) && 
      (
       netType == ConnectivityManager.TYPE_MOBILE  || 
       netType == ConnectivityManager.TYPE_WIFI  /*|| 
       netType == ConnectivityManager.TYPE_WIMAX  || 
       netType == ConnectivityManager.TYPE_ETHERNET */ ); 
} 

return connected; 

मैं ओपी के प्रश्न के अनुसार वाई-फाई और 3 जी के लिए इस कोड सीमित लेकिन यह विस्तार करने के लिए यह नव ऐसे ईथरनेट या वाई के रूप में कनेक्शन के लिए जोड़ा आसान है अधिकतम।

+0

आपकी चिंता के लिए धन्यवाद। मैं इस तरह से इस कोड का उपयोग करने की कोशिश कर रहा हूं, लेकिन \t को बंद करने के लिए इसकी देनदारी बल (0) ( \t प्रारंभ गतिविधि (इराद 7); \t} – user667340

+0

इसका मतलब है कि कोड में जब आप कनेक्ट होते हैं तो एक त्रुटि होती है। लेकिन उस कोड में नहीं जो आपके कनेक्ट होने पर निष्पादित हो रहा है। – Shlublu

+0

कृपया गाइड करें कि मैं केस स्टेटमेंट में कैसे डाल सकता हूं कि यदि यह इंटरनेट से जुड़ा हुआ है तो उसे दूसरे इरादे को खोलना चाहिए अन्यथा यह केवल टोस्ट में प्रदर्शित होता है। – user667340

2

पता नहीं क्यों आपका ऐप दुर्घटनाग्रस्त हो जाता है, शायद यह मदद करता है। हो सकता है कि इस विधि की कोशिश: (आवेदन संदर्भ की जरूरत है)

public static boolean isInternetConnectionActive(Context context) { 
    NetworkInfo networkInfo = ((ConnectivityManager) context 
    .getSystemService(Context.CONNECTIVITY_SERVICE)) 
    .getActiveNetworkInfo(); 

    if(networkInfo == null || !networkInfo.isConnected()) { 
    return false; 
    } 
    return true; 
} 

तो

if(isInternetConnectionActive(getApplicationContext)) { 
/* start Intent */ 
} 
else { 
    /* show Toast */ 
} 

कॉल करने के लिए आशा है कि यह

संबंधित मुद्दे