1

接続マネージャークラスを使用してネットワーク情報を取得します。ネットワークタイプがWifiまたはイーサネットのどちらであるかを取得します。しかし、私のネットワークタイプがWifiの場合、静的か動的かを知りたいです。

誰かがこれで私を助けることができますか

4

2 に答える 2

2

以下に、このスレッドから適用された単純な (最適化されていない) コードを見つけることができます。コードは Android 4.0 用に記述されています。

ユーザー権限を追加することを忘れないでください。

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

方法:

public String getIpAssignment(){

    String myenumvalue="";
    WifiConfiguration wifiConf = null;
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo connectionInfo = wifiManager.getConnectionInfo();
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();        
    for (WifiConfiguration conf : configuredNetworks){
        if (conf.networkId == connectionInfo.getNetworkId()){
            wifiConf = conf;
            break;              
        }
    }
    if(wifiConf != null){

        try {
            Object Enumer = getDeclaredField(wifiConf, "ipAssignment");
            myenumvalue = Enumer.toString();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }   


    }

    return myenumvalue;
}

ipAssignment から列挙型フィールドの 1 つを返します。静的 | DHCP

于 2013-09-24T17:46:05.320 に答える