JimmyHezheng
JimmyHezheng
  • 发布:2014-12-04 09:53
  • 更新:2019-11-21 16:31
  • 阅读:16375

Andorid下实现的获取MAC地址的NJS代码分享

分类:Native.js

Android的NJ代码:

function getMac(){
var mac = "xxx-xxx-xxx-xxx";
if(plus.os.name=="Android"){
// 导入UIAlertView类
//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");

var wifiInfo = wifiManager.getConnectionInfo();

alert(wifiInfo.getMacAddress());

}
return mac;
}

2014-12-04 09:53 4 条评论 负责人:无 分享
已邀请:
ftzn

ftzn

这两天比较闲,特意研究了一下。测了从安卓4.1的古董机到小米9,共5台手机,均能获得正确结果,参考API:https://developer.android.com/reference/java/net/NetworkInterface#getHardwareAddress()

var net = plus.android.importClass("java.net.NetworkInterface")  
var wl0 = net.getByName('wlan0')  
var macByte = wl0.getHardwareAddress()  
var str = ''  
//下面这段代码来自网络  
for (var i = 0; i < macByte.length; i++) {  
    var tmp = "";  
    var num = macByte[i];  
    if (num < 0) {	      
      tmp =(255+num+1).toString(16);  
    } else {  
      tmp = num.toString(16);  
    }  
    if (tmp.length == 1) {  
      tmp = "0" + tmp;  
    }  
    str += tmp;  
}  
console.log('mac', str)
GavinZ

GavinZ

这个调用报错。
var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");

Unexpected identifier at index.html:1

求解= =

Lalapalooza

Lalapalooza

//获取手机mac地址
var Context = plus.android.importClass("android.content.Context");
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var wifiInfo = plus.android.invoke(wifiManager, "getConnectionInfo");
var mac = plus.android.invoke(wifiInfo, "getMacAddress");

  • 获取的mac地址为02:00:00:00:00:00,请问这个怎么解决


    2017-06-29 15:38

  • 1***@qq.com

    回复 :兄弟这个问题解决了吗


    2017-09-27 18:40

3***@qq.com

3***@qq.com

求一个获取IOS MAC案例

无言的飞雪

无言的飞雪

@331647417@qq.com

我这个是获取,当前路由器的mac地址。要获取设备的mac地址,把我注释的那句话放开,
var localMac = wifiInfo.getMacAddress();应该就可以了

307109227

307109227

有IOS MAC的例子吗?

1***@qq.com

1***@qq.com

/**
* 获取手机的MAC地址
* @return
*/
public String getMac(){
String str="";
String macSerial="";
try {
Process pp = Runtime.getRuntime().exec(
"cat /sys/class/net/wlan0/address ");
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);

        for (; null != str;) {  
            str = input.readLine();  
            if (str != null) {  
                macSerial = str.trim();// 去空格  
                break;  
            }  
        }  
    } catch (Exception ex) {  
        ex.printStackTrace();  
    }  
    if (macSerial == null || "".equals(macSerial)) {  
        try {  
            return loadFileAsString("/sys/class/net/eth0/address")  
                    .toUpperCase().substring(0, 17);  
        } catch (Exception e) {  
            e.printStackTrace();  
              
        }  
          
    }  
    return macSerial;  
}  
  public static String loadFileAsString(String fileName) throws Exception {  
        FileReader reader = new FileReader(fileName);    
        String text = loadReaderAsString(reader);  
        reader.close();  
        return text;  
    }  
  public static String loadReaderAsString(Reader reader) throws Exception {  
        StringBuilder builder = new StringBuilder();  
        char[] buffer = new char[4096];  
        int readLength = reader.read(buffer);  
        while (readLength >= 0) {  
            builder.append(buffer, 0, readLength);  
            readLength = reader.read(buffer);  
        }  
        return builder.toString();  
    }上面那个方法不行了   6.0以上版本不适用  这是安卓代码   大佬能整一下吗
战无不胜

战无不胜

ios wifi列表怎么获取?

1***@qq.com

1***@qq.com

为什么魅族手机获取不了MAC地址?大神解答一下

2***@qq.com

2***@qq.com - 茫茫代码中的一粒沙

安卓8.0以上就不好用了这个方法
var Context = plus.android.importClass(“android.content.Context”);
var wifiManager = plus.android.runtimeMainActivity()。getSystemService(Context.WIFI_SERVICE);
var wifiInfo = plus.android.invoke(wifiManager,“getConnectionInfo”);
var mac = plus.android.invoke(wifiInfo,“getMacAddress”);

求个全版本的获取MAC地址方法 我愿意付费谢谢各位大神

  • 1***@qq.com

    兄弟,你的问题解决了吗


    2019-08-02 17:26

  • 2***@qq.com

    原生高版本android10都获取不到,低版本的可以


    2019-12-17 12:01

Huiqi

Huiqi

获取的mac是 02:00:00:00:00:00的的解决:给应用【定位】的权限
另外:
var netMac = wifiInfo.getBSSID(); //获取Wifi路由器的Mac地址
var ssid = wifiInfo.getSSID(); //获取Wifi路由器的SSID

该问题目前已经被锁定, 无法添加新回复