Skip to content

Device ​

读设备屏幕、系统版本、机型、网络、位置、电量与亮度。page.js 与任务脚本都能用。

何时用: 算点击坐标、判断机型、查网络、取电量、调亮度、取 ANDROID_ID / 激活码。
何时不用: 找界面节点用 UiSelector;启停 App 用 App。

常用 ​

方法返回说明
width() / height()number屏幕真实宽/高(px);旋转后仍是真实尺寸
pixelDensity()number密度,dp→px 用;常见 1 / 2 / 3
getLocation()对象或 null需位置权限
isNetworkConnected()boolean是否联网
getInstalledPackages()string[]已装包名
javascript
console.log(Device.width(), Device.height());
let px = 16 * Device.pixelDensity();

width() ​

返回: {number} 宽度,单位 px

屏幕真实宽度;旋转后仍返回真实宽度。

height() ​

返回: {number} 高度,单位 px

屏幕真实高度;旋转后仍返回真实高度。

pixelDensity() ​

返回: {number} 屏幕像素密度(density),用于 dp 与 px 换算。

  • 1:mdpi(约 160dpi)
  • 2:xhdpi(约 320dpi)
  • 3:xxhdpi(约 480dpi)
javascript
let density = Device.pixelDensity();
let px = 16 * density;

sdkInt() ​

返回: {number} SDK 版本号

device() ​

返回: {string} 硬件标识(如 honor_xxx),不是市场名 / 品牌名 / 型号名。

androidVersion() ​

返回: {string} Android 版本号

getUuid() ​

返回: {string} ANDROID_ID。恢复出厂可能变;卸载 App 不变。

getToken() ​

返回: {string} 设备激活码(用户激活后才有此值)

getAttr(key) ​

参数: key {string}

返回: {string} 其它设备数据;也可用 getAttr('token') 代替 getToken()。

brand() / os() / model() / codename() / manufacturer() / hardware() / board() / product() ​

方法返回示例含义
brand()品牌,如 huawei
os()多为 android
model()型号名
codename()代号
manufacturer()制造商
hardware()硬件名
board()主板
product()产品名

bootloader() / buildId() / display() / fingerprint() / host() / user() ​

构建与指纹信息,各返回 {string}。

getCpuAbi() / getCpuAbis() ​

  • getCpuAbi() → {string},如 arm64-v8a
  • getCpuAbis() → {string[]} 支持的架构列表

网络 ​

方法返回说明
getWifiIPAddress()stringWiFi IP;未连为 ""
getIPAddress()string当前局域网 IP;失败 127.0.0.1
getPublicIPAddress()string公网 IPv4;需网络,可能较慢;失败 ""
getPublicIPAddressV6()string公网 IPv6;失败 ""
getPublicIPInfo(){ ipv4, ipv6 }公网双栈
getIpInfo()对象ip / wifiIP / publicIP / publicIPV6 / publicIPInfo
getMacAddress()stringMAC;WiFi 未连为 ""
getNetworkType()stringWiFi / Mobile / Ethernet / Other / None
isNetworkConnected()boolean是否已联网
getNetworkInfo()对象type / connected / macAddress / IP 字段
javascript
if (Device.isNetworkConnected()) {
  console.log(Device.getNetworkType(), Device.getIPAddress());
}

getLocation() ​

返回: 位置对象或 null。需先申请位置权限(见 Access)。

字段:latitude、longitude、altitude、accuracy、speed、bearing、time、provider。优先 GPS,否则网络/被动。

getStatusBarHeight() / getNavigationBarHeight() ​

返回: {number} 状态栏 / 底部导航栏高度(px)。导航栏隐藏或物理键时为 0。

getInstalledPackages() / getInstalledApplications() ​

  • getInstalledPackages() → {string[]} 包名列表
  • getInstalledApplications() → 数组,每项含 packageName、appName、versionName、versionCode

电量 / 屏幕 / 内存 / 亮度 ​

方法返回说明
getBattery()对象level(0–100)、isCharging、status、plugged、temperature、voltage
isScreenOn()boolean屏幕是否亮着
wakeUp(millis?)void点亮屏幕;默认约 3s;不保证解锁
getMemoryInfo()对象totalMem / availMem / threshold / lowMemory
getBrightness()number0–255;失败 -1
setBrightness(value)boolean需「修改系统设置」权限
isAutomaticBrightness()boolean是否自动亮度
setAutomaticBrightness(auto)boolean需修改系统设置权限
canWriteSettings() / openWriteSettings()—检查 / 打开授权页(也可用 Access 同名方法)
javascript
let bat = Device.getBattery();
console.log(bat.level, bat.isCharging);
if (!Device.canWriteSettings()) {
  Device.openWriteSettings();
} else {
  Device.setBrightness(128);
}

注意 ​

  • 手势坐标用 width() / height(),单位 px。
  • getLocation 前先检查位置权限。