Skip to content

设备 - 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未连接,返回空字符串 ""

javascript
let wifiIP = Device.getWifiIPAddress();
console.log("WiFi IP:", wifiIP); // 例如: "192.168.1.100"

getIPAddress()

返回: {string}

获取当前活动网络的IP地址(支持WiFi和移动网络,返回局域网IP)。如果获取失败,返回 "127.0.0.1"

javascript
let ip = Device.getIPAddress();
console.log("当前IP:", ip); // 例如: "192.168.1.100" 或 "10.0.0.5"

getPublicIPAddress()

返回: {string}

获取公网IPv4地址(需要通过HTTP请求外部服务)。如果获取失败,返回空字符串 ""

注意:此方法需要网络连接,可能需要几秒钟时间

javascript
let publicIP = Device.getPublicIPAddress();
console.log("公网IP:", publicIP); // 例如: "123.45.67.89"

getPublicIPAddressV6()

返回: {string}

获取公网IPv6地址(需要通过HTTP请求外部服务)。如果获取失败,返回空字符串 ""

注意:此方法需要网络连接,可能需要几秒钟时间

javascript
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地址
javascript
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)
javascript
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未连接,返回空字符串 ""

javascript
let mac = Device.getMacAddress();
console.log("MAC地址:", mac);

getNetworkType()

返回: {string}

获取网络类型,可能的值:

  • "WiFi" - WiFi网络
  • "Mobile" - 移动网络
  • "Ethernet" - 以太网
  • "Other" - 其他网络类型
  • "None" - 无网络连接
javascript
let networkType = Device.getNetworkType();
console.log("网络类型:", networkType);

isNetworkConnected()

返回: {boolean}

检查网络是否已连接

javascript
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地址
javascript
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不可用,会尝试使用网络定位。如果仍然无法获取位置,会尝试使用被动定位提供者。

javascript
// 先检查并申请位置权限
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。

注意:状态栏是屏幕顶部显示时间、电池、信号等信息的区域。

javascript
let statusBarHeight = Device.getStatusBarHeight();
console.log("状态栏高度:", statusBarHeight, "像素");

getNavigationBarHeight()

返回: {number}

获取底部虚拟按钮(导航栏)高度(像素)。如果导航栏隐藏了或获取失败返回0。

注意:导航栏是屏幕底部显示返回、主页、最近任务等虚拟按钮的区域。如果设备使用物理按键或导航栏被隐藏,此方法返回0。

javascript
let navBarHeight = Device.getNavigationBarHeight();
console.log("导航栏高度:", navBarHeight, "像素");
if (navBarHeight === 0) {
    console.log("导航栏已隐藏或设备使用物理按键");
}

getInstalledPackages()

返回: {string[]}

获取所有已安装应用的包名列表。

返回:

  • {string[]} - 应用包名数组
javascript
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} - 版本号
javascript
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("---");
}

AutoJS文档 Released under the ISC License.