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-v8agetCpuAbis()→{string[]}支持的架构列表
网络
| 方法 | 返回 | 说明 |
|---|---|---|
getWifiIPAddress() | string | WiFi IP;未连为 "" |
getIPAddress() | string | 当前局域网 IP;失败 127.0.0.1 |
getPublicIPAddress() | string | 公网 IPv4;需网络,可能较慢;失败 "" |
getPublicIPAddressV6() | string | 公网 IPv6;失败 "" |
getPublicIPInfo() | { ipv4, ipv6 } | 公网双栈 |
getIpInfo() | 对象 | ip / wifiIP / publicIP / publicIPV6 / publicIPInfo |
getMacAddress() | string | MAC;WiFi 未连为 "" |
getNetworkType() | string | WiFi / 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() | number | 0–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前先检查位置权限。
