2011-11-02 9 views
15

Android搭載端末がWi-Fiに接続されているかどうかを判断する必要があります。搭載されている場合は、Wi-FiのIPアドレスを取得する必要があります。AndroidでWi-FiのIPアドレスを検出していますか?

ConnectivityManagerを使用して、アクティブなネットワークがWifiネットワークであるかどうかを判断する方法、およびjava.net.NetworkInterfaceを使用して使用可能なネットワークインターフェイスを反復してIPアドレスを取得する方法を知っています。

どのようにすればよいかわからないのは、複数のアドレスが見つかった場合、どのIPアドレスがWifiネットワークに属しているかを判断することです。何かアドバイス?

ありがとうございました。

答えて

45
public String getIpAddr() { 
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
    WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
    int ip = wifiInfo.getIpAddress(); 

    String ipString = String.format(
    "%d.%d.%d.%d", 
    (ip & 0xff), 
    (ip >> 8 & 0xff), 
    (ip >> 16 & 0xff), 
    (ip >> 24 & 0xff)); 

    return ipString; 
} 

を注意してください:あなたは、コードにアクセスするには<user-permission/>としてあなたAndroidManifest.xmlandroid.permission.INTERNETandroid.permission.ACCESS_WIFI_STATEを追加する必要があります。

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

これはうまくいくようですが、情報に感謝します。 –

+0

それはうまくいってうれしい! –

+0

インターネットのアクセス許可は不要です。 ACCESS_WIFI_STATE(少なくとも4.1.1以上) –

3

このコードを試してください。

ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

//To fetch the state of the Wi-Fi network in the device 
Boolean isWifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); 

WifiManager wifiMgr = (WifiManager) getBaseContext().getSystemService(Context.WIFI_SERVICE); 
WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 

//To fetch the name of the Wi-Fi network to which the device is connected 
String wifiName = wifiInfo.getSSID(); 
+0

、それは私の無線LANネットワークの名称を与えるという点で、これは便利ですが、それは私が探していたものは本当にありません。ネットワークインタフェースを列挙すると、「tiwlan0」などの名前が付けられます。その名前をアクティブなネットワークに関連付ける必要があります。 –

1
static final int IP_ADDRESS_LENGTH = 32; 

    public static Integer getSystemWifiIpAddress(Context context) 
    { 
    WifiManager wManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wInfo = wManager.getConnectionInfo(); 

    int ipAddress = wInfo.getIpAddress(); 
    if (ipAddress == 0) 
     return null; 
    return ipAddress; 
    } 
+0

IPはどのようにしてintになりますか? –

関連する問題