mui框架获取手机设备当前IP地址信息

最近在做H5的一个项目,有一个需求是使用H5来获取手机的IP地址,如果不在一个网段就跳转到APN设置界面

让用户手动设置;js代码如下所示:

// 全局抽取出来获取设备当前IP地址
function getIp() {
    var ip = "127.0.0.1";
    var Context = plus.android.importClass("android.content.Context");
    if (plus.os.name == "Android") {
        //WifiManager
        var Context = plus.android.importClass("android.content.Context");
        var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");
        var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
        var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");

        if (!wifiManager.isWifiEnabled()) { //未连接wifi
            var Enumeration = plus.android.importClass("java.util.Enumeration");
            var NetworkInterface = plus.android.importClass("java.net.NetworkInterface");
            var Inet4Address = plus.android.importClass("java.net.Inet4Address");
            var en = NetworkInterface.getNetworkInterfaces();
            while (plus.android.invoke(en, "hasMoreElements")) {
                var ni = plus.android.invoke(en, "nextElement");
                var interfaceName = ni.getDisplayName();
                //console.log("tag", "网络名字" + interfaceName);
                var enumIpAddr = plus.android.invoke(ni, "getInetAddresses")
                while (plus.android.invoke(enumIpAddr, "hasMoreElements")) {
                    var inetAddress = plus.android.invoke(enumIpAddr, "nextElement");
                    if (!plus.android.invoke(inetAddress, "isLoopbackAddress") && inetAddress instanceof Inet4Address) {
                        ip = plus.android.invoke(inetAddress, "getHostAddress");
                        return ip;
                    }
                }
            }
        } else { //连接wifi
            var wifiInfo = wifiManager.getConnectionInfo();
            ip = intToIp(wifiInfo.getIpAddress());
            var wifiInfo = wifiManager.getConnectionInfo();
            var ipAddress = wifiInfo.getIpAddress();
            ip = intToIp(ipAddress);
        }
    }
    return ip;
}

function intToIp(i) {
    return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF);
}

// 如果IP地址不在特定网段内,跳转到APN设置界面,让用户手动设置
function settingAPN() {
    if (mui.os.ios) {
        plus.runtime.launchApplication({
            action: 'prefs:root=MOBILE_DATA_SETTINGS_ID'
        }, function(e) {}); //WIFI  
    } else {
        // alert(getIp());
        var main = plus.android.runtimeMainActivity();
        var Intent = plus.android.importClass("android.content.Intent");
        var mIntent = new Intent('android.settings.APN_SETTINGS');
        main.startActivity(mIntent);
    }
}

***********************************分割线*************************************

如果需要判断IP地址在某个网段范围的时候可以把获取的IP地址转换为数组,然后判断范围:

//这里多加一个判断
        var currentIpArray = new Array();

//这里的IP就是获取到的IP地址
        var getCurrentIp = ip;
        currentIpArray = getCurrentIp.split(".");
        // alert(currentIpArray[0]);
        var firstNumber = currentIpArray[0];
        var secondNumber = currentIpArray[1];

//这里对获取到的IP地址尽心判断
        if (firstNumber == 192 && secondNumber >= 168 && secondNumber <= 189) {
            //alert("firstNumber"+firstNumber+"secondNumber"+secondNumber);
            return true;
        } else {
            return false;
        }

猜你喜欢

转载自blog.csdn.net/qq_42618969/article/details/89028736
今日推荐