如何使用NativeScript获取本地IP

时间:2017-08-27 20:33:59

标签: javascript nativescript

我正在使用NativeScript创建应用,我需要获取设备的本地IP地址。 我在另一个页面中读到您可以访问本机API,他们这样做了:

var app = require("application");
var context = android.content.Context;
var wifiManager = app.android.context.getSystemService(context.WIFI_SERVICE);
var wInfo = wifiManager.getConnectionInfo();
var ip = wInfo.getIpAddress();

我刚开始使用NativeScript,所以我几乎不明白这意味着什么。

在上面的代码中,IP是251701440,既不是本地IP也不是公共IP。

有没有办法获取设备的本地IP?

1 个答案:

答案 0 :(得分:0)

要获取Android设备的IP地址,您可以先验证连接类型。如果是WiFi,你可以使用android WiFiManager,在这种情况下使用移动数据连接时 - java.net.NetworkInterface。

WiFiManager

var context = app.android.context;
var  wifiMgr = context.getSystemService("wifi");
var wifiInfo = wifiMgr.getConnectionInfo();
var ip = wifiInfo.getIpAddress();
var  ipAddress = android.text.format.Formatter.formatIpAddress(ip);
console.log("ip");
console.log(ipAddress);

的NetworkInterface

var en = java.net.NetworkInterface.getNetworkInterfaces();
                 console.log("NetworkInterface");
                 console.log(en)
                 for(var obj in en){
                     var intf = en.nextElement();
                     var enumIpAddr = intf.getInetAddresses();
                     console.log("enumIpAddr");
                     for(var obj2 in enumIpAddr){
                         console.log("obj");
                         if(enumIpAddr.hasMoreElements()){
                             var inetAddress = enumIpAddr.nextElement();
                             if ((!inetAddress.isLoopbackAddress()) && (inetAddress instanceof   java.net.Inet4Address)) {
                                     console.log("return inetAddress.getHostAddress(): "+inetAddress.getHostAddress());
                             }
                         }
                     }
                 }

使用NetworkInterface的第二种方法尚未经过全面测试,可能会在返回地址时出现问题。