Files
endo_an_2/js_sdk/zw-devicemac/devicemac.js
T
2026-02-10 09:51:18 +08:00

115 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//获取mac地址
// "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>"
// "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>"
// "<uses-permission android:name=\"android.permission.NETWORK_STACK\" />"
// "<uses-permission android:name=\"android.permission.INTERNET\" />"
export function getMacAddress() {
try {
var NetworkInterface = plus.android.importClass('java.net.NetworkInterface')
var interfaces = NetworkInterface.getNetworkInterfaces()
// 直接使用 Enumeration 的方法(而非 Iterator
while (plus.android.invoke(interfaces, 'hasMoreElements')) {
var intf = plus.android.invoke(interfaces, 'nextElement')
var name = plus.android.invoke(intf, 'getName')
if (name === 'wlan0' || name === 'eth0' || name === 'wlan1') {
var macBytes = plus.android.invoke(intf, 'getHardwareAddress')
if (macBytes) {
var macStr = Array.from(macBytes)
.map(byte => (byte & 0xff).toString(16).padStart(2, '0'))
.join(':')
.toUpperCase()
console.log('MAC Address:', macStr)
return macStr
}
}
}
console.error('No valid MAC address found')
return null
} catch (e) {
console.error('Failed to get MAC address:', e)
return null
}
}
// 获取唯一设备ID
export function getDeviceId() {
var settings = plus.android.importClass('android.provider.Settings')
var Secure = settings.Secure
var context = plus.android.runtimeMainActivity()
var androidId = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID)
return androidId
}
// 备用方案 获取UUID
export function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (Math.random() * 16) | 0,
v = c == 'x' ? r : (r & 0x3) | 0x8
return v.toString(16)
})
}
// <uses-permission android:name="android.permission.BLUETOOTH" />
/**
* 获取蓝牙 MAC 地址(兼容 Android 5.0+
* @returns {string|null} MAC 地址(格式 "XX:XX:XX:XX:XX:XX"),失败返回 null
*/
function getBluetoothMacLegacy() {
if (plus.os.name !== 'Android') {
console.error('仅支持 Android')
return null
}
try {
const BluetoothAdapter = plus.android.importClass('android.bluetooth.BluetoothAdapter')
const adapter = BluetoothAdapter.getDefaultAdapter()
if (!adapter) {
console.error('蓝牙未启用')
return null
}
const mac = plus.android.invoke(adapter, 'getAddress')
if (mac && mac !== '02:00:00:00:00:00') {
return mac
}
return null
} catch (e) {
console.error('获取失败:', e)
return null
}
}
function getBluetoothMacModern() {
try {
const Context = plus.android.importClass('android.content.Context')
const BluetoothManager = plus.android.importClass('android.bluetooth.BluetoothManager')
const mainActivity = plus.android.runtimeMainActivity()
const bluetoothManager = mainActivity.getSystemService(Context.BLUETOOTH_SERVICE)
const adapter = plus.android.invoke(bluetoothManager, 'getAdapter')
if (!adapter) return null
const mac = plus.android.invoke(adapter, 'getAddress')
return mac && mac !== '02:00:00:00:00:00' ? mac : null
} catch (e) {
console.error('BluetoothManager 方式失败:', e)
return null
}
}
export function getBluetoothMacAddress() {
const Build = plus.android.importClass('android.os.Build')
const isModernAndroid = Build.VERSION.SDK_INT >= 23 // Android 6.0+
// 先尝试新方法,再回退旧方法
const mac = isModernAndroid ? getBluetoothMacModern() : getBluetoothMacLegacy()
if (mac) {
console.log('获取到蓝牙 MAC:', mac)
return mac
} else {
console.error('无法获取真实 MAC')
return null
}
}