|
|
AIWROK设备信息与权限检测
- /**
- * AIWROK 设备信息与权限检测
- * 功能:获取设备基本信息、检测权限、列出已安装应用
- */
-
- // ======================== 设备信息 ========================
-
- function getDeviceInfo() {
- printl("================ 设备信息 ================");
-
- // 屏幕信息
- var width = screen.getScreenWidth();
- var height = screen.getScreenHeight();
- printl("屏幕分辨率: " + width + " x " + height);
-
- // DPI
- var dpi = context.getResources().getDisplayMetrics().densityDpi;
- printl("屏幕DPI: " + dpi);
- printl("屏幕密度: " + (dpi / 160).toFixed(2));
-
- // 系统信息
- importClass(android.os.Build);
- printl("设备品牌: " + Build.BRAND);
- printl("设备型号: " + Build.MODEL);
- printl("产品名称: " + Build.PRODUCT);
- printl("Android版本: " + Build.VERSION.RELEASE);
- printl("SDK版本: " + Build.VERSION.SDK_INT);
- // SUPPORTED_ABIS 返回数组对象,手动拼接
- var abis = Build.SUPPORTED_ABIS;
- var abiStr = "";
- for (var i = 0; i < abis.length; i++) {
- if (i > 0) abiStr += ", ";
- abiStr += abis[i];
- }
- printl("CPU架构: " + abiStr);
-
- // 内存信息
- try {
- importClass(android.app.ActivityManager);
- var am = context.getSystemService(context.ACTIVITY_SERVICE);
- var memInfo = new ActivityManager.MemoryInfo();
- am.getMemoryInfo(memInfo);
- var totalMemGB = memInfo.totalMem / (1024 * 1024 * 1024);
- var availMemGB = memInfo.availMem / (1024 * 1024 * 1024);
- printl("总内存: " + totalMemGB.toFixed(2) + " GB");
- printl("可用内存: " + availMemGB.toFixed(2) + " GB");
- } catch (e) {
- printl("内存信息获取失败: " + e.message);
- }
-
- // 存储信息(StatFs 在 Android 10+ 上可能有权限问题,加 try-catch)
- try {
- importClass(android.os.Environment);
- var sdPath = Environment.getExternalStorageDirectory().getPath();
- var statFs = new android.os.StatFs(sdPath);
- var totalSdGB = statFs.getTotalBytes() / (1024 * 1024 * 1024);
- var availSdGB = statFs.getAvailableBytes() / (1024 * 1024 * 1024);
- printl("SD卡总量: " + totalSdGB.toFixed(2) + " GB");
- printl("SD卡可用: " + availSdGB.toFixed(2) + " GB");
- } catch (e) {
- printl("SD卡信息获取失败(Android 10+ 分区存储限制)");
- }
-
- // 网络类型
- try {
- importClass(android.net.ConnectivityManager);
- var cm = context.getSystemService(context.CONNECTIVITY_SERVICE);
- var networkInfo = cm.getActiveNetworkInfo();
- if (networkInfo) {
- var typeName = networkInfo.getTypeName();
- var subtypeName = networkInfo.getSubtypeName();
- printl("网络类型: " + typeName + " " + (subtypeName || ""));
- printl("网络是否可用: " + networkInfo.isAvailable());
- } else {
- printl("网络类型: 无网络");
- }
- } catch (e) {
- printl("网络信息获取失败: " + e.message);
- }
-
- // WiFi状态
- try {
- importClass(android.net.wifi.WifiManager);
- var wm = context.getSystemService(context.WIFI_SERVICE);
- printl("WiFi是否开启: " + wm.isWifiEnabled());
- } catch (e) {}
-
- // 电量信息
- try {
- importClass(android.content.IntentFilter);
- var ifilter = new IntentFilter();
- ifilter.addAction(Intent.ACTION_BATTERY_CHANGED);
- var batteryInfo = context.registerReceiver(null, ifilter);
- if (batteryInfo) {
- var level = batteryInfo.getIntExtra("level", 0);
- var scale = batteryInfo.getIntExtra("scale", 100);
- var percent = Math.round(level * 100 / scale);
- var plugged = batteryInfo.getIntExtra("plugged", 0);
- var pluggedStr = plugged == 0 ? "未充电" : (plugged == 1 ? "USB充电" : (plugged == 2 ? "交流充电" : "其他"));
- printl("电量: " + percent + "%");
- printl("充电状态: " + pluggedStr);
- }
- } catch (e) {}
- }
-
- // ======================== 权限检测 ========================
-
- function checkPermissions() {
- printl("\n================ 权限检测 ================");
-
- var permissions = [
- { name: "读取存储", permission: "android.permission.READ_EXTERNAL_STORAGE" },
- { name: "写入存储", permission: "android.permission.WRITE_EXTERNAL_STORAGE" },
- { name: "悬浮窗", permission: "android.permission.SYSTEM_ALERT_WINDOW" },
- { name: "无障碍", permission: "android.permission.BIND_ACCESSIBILITY_SERVICE" },
- { name: "相机", permission: "android.permission.CAMERA" },
- { name: "录音", permission: "android.permission.RECORD_AUDIO" },
- { name: "网络访问", permission: "android.permission.INTERNET" },
- { name: "震动", permission: "android.permission.VIBRATE" },
- { name: "开机自启", permission: "android.permission.RECEIVE_BOOT_COMPLETED" },
- { name: "前台服务", permission: "android.permission.FOREGROUND_SERVICE" }
- ];
-
- importClass(android.content.pm.PackageManager);
- var pm = context.getPackageManager();
- var grantedCount = 0;
-
- for (var i = 0; i < permissions.length; i++) {
- var p = permissions[i];
- var granted = pm.checkPermission(p.permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED;
- var status = granted ? "✓ 已授权" : "✗ 未授权";
- printl(" " + status + " " + p.name);
- if (granted) grantedCount++;
- }
-
- printl("\n已授权: " + grantedCount + "/" + permissions.length);
- }
-
- // ======================== 应用列表 ========================
-
- function listInstalledApps() {
- printl("\n================ 已安装应用 ================");
-
- importClass(android.content.Intent);
-
- var mainIntent = new Intent(Intent.ACTION_MAIN, null);
- mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- var pm = context.getPackageManager();
- var resolveList = pm.queryIntentActivities(mainIntent, 0);
-
- printl("共 " + resolveList.size() + " 个应用\n");
-
- // 只显示前 20 个
- var count = Math.min(resolveList.size(), 20);
- for (var i = 0; i < count; i++) {
- var info = resolveList.get(i);
- var name = info.loadLabel(pm).toString();
- var pkg = info.activityInfo.packageName;
- printl(" " + (i + 1) + ". " + name + " (" + pkg + ")");
- }
-
- if (resolveList.size() > 20) {
- printl(" ... 还有 " + (resolveList.size() - 20) + " 个应用");
- }
- }
-
- // ======================== IP地址 ========================
-
- function getLocalIP() {
- printl("\n================ IP地址 ================");
-
- try {
- importClass(java.net.NetworkInterface);
- importClass(java.util.Collections);
-
- // 把 Enumeration 转成 List 再遍历(Rhino 兼容)
- var nisList = Collections.list(NetworkInterface.getNetworkInterfaces());
- for (var i = 0; i < nisList.size(); i++) {
- var ni = nisList.get(i);
- var addrsList = Collections.list(ni.getInetAddresses());
- for (var j = 0; j < addrsList.size(); j++) {
- var addr = addrsList.get(j);
- var addrStr = addr.getHostAddress();
- if (!addr.isLoopbackAddress() && addrStr.indexOf(":") < 0) {
- printl("接口: " + ni.getName() + " | IP: " + addrStr);
- }
- }
- }
- } catch (e) {
- printl("IP获取失败: " + e.message);
- }
- }
-
- // ======================== 主程序 ========================
-
- function main() {
- printl("╔══════════════════════════════════════════════╗");
- printl("║ AIWROK 设备信息与权限检测 ║");
- printl("╚══════════════════════════════════════════════╝");
- sleep.millisecond(600);
-
- printl("\n⏳ 正在采集设备硬件信息...");
- sleep.millisecond(500);
- getDeviceInfo();
- sleep.millisecond(1200);
-
- printl("\n⏳ 正在检测应用权限状态...");
- sleep.millisecond(500);
- checkPermissions();
- sleep.millisecond(1200);
-
- printl("\n⏳ 正在扫描已安装应用...");
- sleep.millisecond(500);
- listInstalledApps();
- sleep.millisecond(1200);
-
- printl("\n⏳ 正在获取网络接口信息...");
- sleep.millisecond(500);
- getLocalIP();
- sleep.millisecond(600);
-
- printl("\n╔══════════════════════════════════════════════╗");
- printl("║ 检测完成! ║");
- printl("╚══════════════════════════════════════════════╝");
- }
-
- main();
复制代码
|
|