设备 - Device
Device对象,提供一些设备相关的方法。
width()
返回: {number} 返回宽度 单位为px
获取屏幕真实的宽度(像素值);手机旋转方向后,依然会返回真实的宽度
height()
返回: {number} 返回宽度 单位为px
获取屏幕真实的高度(像素值);手机旋转方向后,依然会返回真实的高度
sdkInt()
返回: {number}
返回SDK的版本号
device()
返回: {string}
请注意,这个返回值并不是设备的市场名称(如"华为荣耀V30")、品牌名(如"华为")或型号名(如"V30")。它更偏向于一个内部或技术名称,用于在Android框架和开发中识别不同的设备硬件。
获取设备的硬件标识,比如华为荣耀,可能返回"honor_xxx"的字符串
androidVersion()
返回: {string}
返回Android的版本号
getUuid()
返回: {string}
获取设备的唯一标识符。此方法返回系统级别的 ANDROID_ID,在设备恢复出厂设置之前会保持不变,保证设备唯一性。
注意:设备恢复出厂设置后,ANDROID_ID 可能会改变。App卸载不会影响此标识符。
getToken()
返回: {string}
获取设备激活码(用户激活后,才有次值)
getAttr(key)
参数: key {string}
返回: {string}
获取设备其他数据,也可以使用getAttr('token')代替getToken方法
brand()
返回: {string}
获取设备的品牌信息;对于华为(Huawei)的设备,它会返回 "huawei"。
os()
返回: {string}
获取设备操作系统信息;对于大多数标准的 Android 设备,Build.VERSION.BASE_OS 通常返回 "android"。然而,在某些设备或定制 Android 版本中,制造商可能会为其定制的基础操作系统设置不同的名称或标识符。
model()
返回: {string}
获取设备的model信息;如:荣耀特定设备的型号名称,如 "Honor V30" 或类似的字符串
codename()
返回: {string}
获取设备的代号信息;如:荣耀特定设备的代号,如 "VOG-AL00" 或类似的字符串
manufacturer()
返回: {string}
获取设备制造商信息,如 "HUAWEI"、"Xiaomi" 等
hardware()
返回: {string}
获取硬件名称,如 "kirin990" 等
board()
返回: {string}
获取主板型号信息
product()
返回: {string}
获取产品名称信息
bootloader()
返回: {string}
获取 Bootloader 版本信息
buildId()
返回: {string}
获取构建ID信息
display()
返回: {string}
获取显示版本信息
fingerprint()
返回: {string}
获取设备指纹信息
host()
返回: {string}
获取主机名信息
user()
返回: {string}
获取构建用户信息
getCpuAbi()
返回: {string}
获取CPU架构信息,如 "arm64-v8a"、"armeabi-v7a" 等
getCpuAbis()
返回: {string[]}
获取所有支持的CPU架构列表
getWifiIPAddress()
返回: {string}
获取WiFi网络的IP地址(仅WiFi连接时有效)。如果WiFi未连接,返回空字符串 ""
let wifiIP = Device.getWifiIPAddress();
console.log("WiFi IP:", wifiIP); // 例如: "192.168.1.100"getIPAddress()
返回: {string}
获取当前活动网络的IP地址(支持WiFi和移动网络,返回局域网IP)。如果获取失败,返回 "127.0.0.1"
let ip = Device.getIPAddress();
console.log("当前IP:", ip); // 例如: "192.168.1.100" 或 "10.0.0.5"getPublicIPAddress()
返回: {string}
获取公网IPv4地址(需要通过HTTP请求外部服务)。如果获取失败,返回空字符串 ""
注意:此方法需要网络连接,可能需要几秒钟时间
let publicIP = Device.getPublicIPAddress();
console.log("公网IP:", publicIP); // 例如: "123.45.67.89"getPublicIPAddressV6()
返回: {string}
获取公网IPv6地址(需要通过HTTP请求外部服务)。如果获取失败,返回空字符串 ""
注意:此方法需要网络连接,可能需要几秒钟时间
let publicIPV6 = Device.getPublicIPAddressV6();
console.log("公网IPv6:", publicIPV6); // 例如: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"getPublicIPInfo()
返回: {object}
获取公网IP信息(包含IPv4和IPv6)
返回对象:
ipv4 {string}- 公网IPv4地址ipv6 {string}- 公网IPv6地址
let ipInfo = Device.getPublicIPInfo();
console.log("IPv4:", ipInfo.ipv4);
console.log("IPv6:", ipInfo.ipv6);getIpInfo()
返回: {object}
获取完整的IP信息(包括当前IP、WiFi IP、公网IP等)
返回对象:
ip {string}- 当前活动网络的IP地址(支持WiFi和移动网络,局域网IP)wifiIP {string}- WiFi网络的IP地址(仅WiFi连接时有效)publicIP {string}- 公网IPv4地址publicIPV6 {string}- 公网IPv6地址publicIPInfo {object}- 公网IP信息(包含IPv4和IPv6)
let ipInfo = Device.getIpInfo();
console.log("当前IP:", ipInfo.ip);
console.log("WiFi IP:", ipInfo.wifiIP);
console.log("公网IPv4:", ipInfo.publicIP);
console.log("公网IPv6:", ipInfo.publicIPV6);getMacAddress()
返回: {string}
获取MAC地址(需要WiFi已连接)。如果WiFi未连接,返回空字符串 ""
let mac = Device.getMacAddress();
console.log("MAC地址:", mac);getNetworkType()
返回: {string}
获取网络类型,可能的值:
"WiFi"- WiFi网络"Mobile"- 移动网络"Ethernet"- 以太网"Other"- 其他网络类型"None"- 无网络连接
let networkType = Device.getNetworkType();
console.log("网络类型:", networkType);isNetworkConnected()
返回: {boolean}
检查网络是否已连接
if (Device.isNetworkConnected()) {
console.log("网络已连接");
} else {
console.log("网络未连接");
}getNetworkInfo()
返回: {object}
获取完整的网络信息
返回对象:
type {string}- 网络类型(WiFi、Mobile、Ethernet等)connected {boolean}- 网络是否已连接macAddress {string}- MAC地址ip {string}- 当前活动网络的IP地址(局域网IP)wifiIP {string}- WiFi网络的IP地址publicIP {string}- 公网IPv4地址publicIPV6 {string}- 公网IPv6地址
let networkInfo = Device.getNetworkInfo();
console.log("网络类型:", networkInfo.type);
console.log("是否连接:", networkInfo.connected);
console.log("MAC地址:", networkInfo.macAddress);
console.log("当前IP:", networkInfo.ip);
console.log("公网IP:", networkInfo.publicIP);getLocation()
返回: {object | null}
获取设备当前位置信息。需要先申请位置权限(使用Access.requestLocationPermissions())。
返回对象:
latitude {number}- 纬度longitude {number}- 经度altitude {number}- 海拔高度(米)accuracy {number}- 精度(米)speed {number}- 速度(米/秒)bearing {number}- 方向角(度)time {number}- 时间戳(毫秒)provider {string}- 定位提供者("gps" 或 "network")
如果获取失败或没有权限,返回 null
注意:此方法会优先使用GPS定位(更精确),如果GPS不可用,会尝试使用网络定位。如果仍然无法获取位置,会尝试使用被动定位提供者。
// 先检查并申请位置权限
if (!Access.hasLocationPermission()) {
if (Access.isLocationPermissionPermanentlyDenied()) {
Dialogs.show('提示', '需要位置权限才能继续,请在设置中开启');
Access.openPermissionSettings();
System.exit();
} else {
Access.requestLocationPermissions();
System.sleep(1000); // 等待权限申请完成
}
}
// 获取位置信息
let location = Device.getLocation();
if (location) {
console.log("纬度:", location.latitude);
console.log("经度:", location.longitude);
console.log("海拔:", location.altitude);
console.log("精度:", location.accuracy);
console.log("速度:", location.speed);
console.log("方向角:", location.bearing);
console.log("时间戳:", location.time);
console.log("定位提供者:", location.provider);
} else {
console.log("获取位置失败,请检查权限和定位服务是否开启");
}getStatusBarHeight()
返回: {number}
获取状态栏高度(像素)。如果获取失败返回0。
注意:状态栏是屏幕顶部显示时间、电池、信号等信息的区域。
let statusBarHeight = Device.getStatusBarHeight();
console.log("状态栏高度:", statusBarHeight, "像素");getNavigationBarHeight()
返回: {number}
获取底部虚拟按钮(导航栏)高度(像素)。如果导航栏隐藏了或获取失败返回0。
注意:导航栏是屏幕底部显示返回、主页、最近任务等虚拟按钮的区域。如果设备使用物理按键或导航栏被隐藏,此方法返回0。
let navBarHeight = Device.getNavigationBarHeight();
console.log("导航栏高度:", navBarHeight, "像素");
if (navBarHeight === 0) {
console.log("导航栏已隐藏或设备使用物理按键");
}getInstalledPackages()
返回: {string[]}
获取所有已安装应用的包名列表。
返回:
{string[]}- 应用包名数组
let packages = Device.getInstalledPackages();
console.log("已安装应用数量:", packages.length);
for (let i = 0; i < packages.length; i++) {
console.log("应用包名:", packages[i]);
}getInstalledApplications()
返回: {Array<object>}
获取所有已安装应用的详细信息列表。
返回:
{Array<object>}- 应用信息数组,每个元素包含以下属性:packageName {string}- 应用包名appName {string}- 应用名称versionName {string}- 版本名称versionCode {number}- 版本号
let apps = Device.getInstalledApplications();
console.log("已安装应用数量:", apps.length);
for (let i = 0; i < apps.length; i++) {
let app = apps[i];
console.log("应用名称:", app.appName);
console.log("包名:", app.packageName);
console.log("版本:", app.versionName);
console.log("版本号:", app.versionCode);
console.log("---");
}