2016-11-18 16 views
13

क्या कोई तरीका है जिसके माध्यम से मैं एंड्रॉइड में वाईफाई और सेलुलर नेटवर्क दोनों का आईपी पता प्राप्त कर सकता हूं। मैंने कई उदाहरणों का उपयोग करने की कोशिश की लेकिन वह प्राप्त करने में सक्षम था केवल वाईफाई नेटवर्क का पता और सेलुलर नेटवर्क नहीं। मैंने वाईफाई और सेलुलर नेटवर्क दोनों को सक्षम किया है और डिवाइस को वाईफाई के माध्यम से इंटरनेट एक्सेस है। हाँ कैसे है कि संभव हैएंड्रॉइड में वाईफाई से डिवाइस कनेक्ट होने पर सेलुलर नेटवर्क का आईपी पता कैसे प्राप्त करें

String ipAddress = null; 
    try { 
     for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
      NetworkInterface intf = en.nextElement(); 
      for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
       InetAddress inetAddress = enumIpAddr.nextElement(); 
       if (!inetAddress.isLoopbackAddress()) { 
        ipAddress = inetAddress.getHostAddress().toString(); 
        Log.i("Here is the Address",ipAddress); 
       } 
      } 
     } 
    } catch (SocketException ex) { 

    } 

यह सेलुलर नेटवर्क जब डिवाइस WiFi.If से जुड़ा है का आईपी पता प्राप्त करने के लिए संभव है:

यहाँ कोड है जो मैं आईपी पते पाने के लिए उपयोग कर रहा हूँ है।

+1

मुझे नहीं लगता कि यह संभव है। चूंकि आईपी पता आपके आईपी चैनल के लिए असाइन किया जाएगा, वाईफ़ाई/मोबाइलडेटा में एक ही समय में सक्रिय एक चैनल हो सकता है। –

उत्तर

11

जब भी आप अपने डिवाइस पर वाईफ़ाई सक्षम और किसी WiFi नेटवर्क से सक्रिय कनेक्शन है, अपने मोबाइल डेटा अस्थायी रूप से अक्षम, कोई फर्क नहीं पड़ता अगर आप इसे मैन्युअल रूप से या नहीं सक्षम किया हुआ है। यदि आपके पास कोई सक्रिय वाईफाई कनेक्शन नहीं है तो "मोबाइल डेटा चालू/बंद" सेटिंग को केवल तभी लिया जाएगा।

कुछ कस्टम रोम के पास वाईफाई से कनेक्ट होने पर मोबाइल कनेक्शन को जीवंत रखने का विकल्प होता है (इसलिए यदि आप अपना वाईफाई कनेक्शन खो देते हैं, तो यह मोबाइल पर तेज़ी से स्विच हो जाता है), लेकिन फिर भी, वाईफ़ाई कनेक्शन का उपयोग किया जाता है।

निष्कर्ष: आप दोनों IP पते नहीं मिल सकता है के रूप में आप दोनों वाईफ़ाई और मोबाइल नेटवर्क पर नहीं हो सकता है (और यदि आप कर सकते हैं, आप केवल वाईफाई सक्रिय रूप से उपयोग करें)

6

कोशिश यह हो सकता है यह उपयोगी .... ।

मोबाइल आईपी पते के लिए .....

public static String getMobileIPAddress() { 
     try { 
      List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); 
      for (NetworkInterface intf : interfaces) { 
       List<InetAddress> addrs = Collections.list(intf.getInetAddresses()); 
       for (InetAddress addr : addrs) { 
        if (!addr.isLoopbackAddress()) { 
         return addr.getHostAddress(); 
        } 
       } 
      } 
     } catch (Exception ex) { } // for now eat exceptions 
     return ""; 
    } 

वाईफ़ाई आईपी पते के लिए ....

public String getWifiIPAddress() { 
     WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE); 
     WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
     int ip = wifiInfo.getIpAddress(); 
     return Formatter.formatIpAddress(ip); 
    } 

अपने menifest में इस अनुमति ....

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

इस तरह उपयोग .... शामिल

String wifiIp = getWifiIPAddress(); 
String mobileIp = getMobileIPAddress(); 

आप इस तरह आउटपुट मिलता है ......

o

Possibally How to get IP address of the device

1

के dublicate आप सेलुलर कनेक्शन के लिए आईपी नहीं मिलेगा जब अपने वाईफ़ाई सक्षम है और जुड़ा हुआ है। ऐसा इसलिए है क्योंकि सिस्टम बैटरी बचत कारणों के लिए सेलुलर डेटा कनेक्शन का उपयोग नहीं करता है। Altough आप दोनों एक ही समय में सक्षम कर सकते हैं, सिस्टम एक समय में केवल एक का उपयोग करेगा। ऐसा लगता है: दोनों की अनुमति है, लेकिन केवल एक का उपयोग किया जाता है।

केवल एक उदाहरण है जिसके बारे में मैं सोच सकता हूं: यह तब होता है जब आप किसी भी इंटरनेट एक्सेस के साथ वाईफ़ाई के माध्यम से कनेक्ट होते हैं, तो आपका फोन सेलुलर के माध्यम से भी कनेक्ट होगा।

3
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); 
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); 
2

अपने जावा कोड में निम्नलिखित का उपयोग करें:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

स्रोत:: Get my wifi ip address Android

WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
int ip = wifiInfo.getIpAddress(); 
String ipAddress = Formatter.formatIpAddress(ip); 

अपने Android मालसूची फ़ाइल में इस अनुमति को जोड़ने के लिए मत भूलना आशा करता हूँ की ये काम करेगा! शुभ लाभ!

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

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