YYPOST群发软件 发表于 2026-7-23 06:56:42

AIWROK软件代理模式一键删除桌面所有APP版示例


AIWROK软件代理模式一键删除桌面所有APP版示例



//// AIWROK软件代理模式一键删除桌面所有APP版示例
// 使用pm uninstall命令批量卸载第三方应用

print.log("===== agent 代理 API 一键删除所有应用版 =====");
print.log("📌 重要提示:请确保手机屏幕当前显示桌面!");

var 屏幕宽 = screen.getScreenWidth();
var 屏幕高 = screen.getScreenHeight();
print.log("当前屏幕:" + 屏幕宽 + " x " + 屏幕高);

var 排除包名列表 = [
    "com.android.launcher3",
    "com.android.settings",
    "com.android.systemui",
    "com.android.phone",
    "com.android.mms",
    "com.android.camera",
    "com.android.contacts",
    "com.android.dialer",
    "com.android.email",
    "com.android.calendar",
    "com.android.gallery",
    "com.android.filemanager",
    "com.android.browser",
    "com.android.inputmethod",
    "com.google.android",
    "com.android.webview",
    "com.android.fallback",
    "com.android.providers",
    "com.android.server",
    "com.android.internal",
    "com.android.location",
    "com.android.wifi",
    "com.android.bluetooth",
    "com.android.nfc",
    "com.android.usb",
    "com.android.media",
    "com.android.audio",
    "com.android.soundrecorder",
    "com.android.packageinstaller",
    "com.android.vending",
    "com.android.market",
    "com.android.keychain",
    "com.android.print",
    "com.android.dreams",
    "com.android.externalstorage",
    "com.android.sharedstoragebackup",
    "com.android.backup",
    "com.android.proxyhandler",
    "com.android.captiveportallogin",
    "com.android.documentsui",
    "com.android.pacprocessor",
    "com.android.storagemanager",
    "com.android.managedprovisioning",
    "com.android.cts",
    "com.android.flags",
    "com.android.egg",
    "com.android.framework",
    "com.android.settings.intelligence",
    "com.android.shell",
    "com.android.system",
    "com.android.traceur",
    "com.android.uirenderer",
    "com.android.wallpaper",
    "com.android.wallpaper.livepicker",
    "com.android.launcher",
    "com.android.inputmethod.latin",
    "com.android.inputmethod.pinyin",
    "com.android.inputmethod.sogou",
    "com.baidu.input",
    "com.tencent.input",
    "io.aiwork",
    "com.aiwork",
    "aiwork",
    "com.layernet.launcher",
    "com.autoapp"
];

function 是否排除包名(pkg) {
    for (var i = 0; i < 排除包名列表.length; i++) {
      var exclude = 排除包名列表;
      if (pkg === exclude || pkg.indexOf(exclude) === 0) {
            return true;
      }
    }
    if (pkg.indexOf("com.android.") === 0) {
      return true;
    }
    if (pkg.indexOf("android.") === 0) {
      return true;
    }
    return false;
}

function 执行Shell(cmd) {
    var 结果 = agent.shell(cmd);
    if (!结果) return "";
   
    var 结果字符串 = "";
    if (typeof 结果 === "string") {
      结果字符串 = 结果;
    } else if (结果.toString) {
      结果字符串 = 结果.toString();
    } else {
      结果字符串 = "" + 结果;
    }
   
    var startIdx = -1;
    if (typeof 结果字符串.indexOf === "function") {
      startIdx = 结果字符串.indexOf("successMsg:");
    }
   
    var content = "";
    if (startIdx !== -1) {
      var afterSuccess = 结果字符串.substring(startIdx + 11);
      var errorIdx = afterSuccess.indexOf(",errorMsg:");
      if (errorIdx !== -1) {
            content = afterSuccess.substring(0, errorIdx);
      } else {
            content = afterSuccess;
      }
      content = content.trim();
    } else {
      content = 结果字符串;
    }
   
    return "" + content;
}

function 获取UI() {
    var 临时文件 = "/sdcard/ui_dump.xml";
    agent.shell("uiautomator dump --compressed " + 临时文件 + " 2>/dev/null");
    return 执行Shell("cat " + 临时文件);
}

function 解析包名列表(结果) {
    var packages = [];
    var pkgParts = 结果.split("package:");
    for (var i = 0; i < pkgParts.length; i++) {
      var pkg = pkgParts.trim();
      if (pkg !== "") {
            var endIdx = pkg.indexOf("\n");
            if (endIdx !== -1) {
                pkg = pkg.substring(0, endIdx).trim();
            }
            endIdx = pkg.indexOf("package:");
            if (endIdx !== -1) {
                pkg = pkg.substring(0, endIdx).trim();
            }
            if (pkg !== "" && !是否排除包名(pkg) && packages.indexOf(pkg) === -1) {
                packages.push(pkg);
            }
      }
    }
    return packages;
}

function 获取所有应用包名() {
    print.log("&#128269; 正在获取所有应用包名...");
    var 结果 = 执行Shell("pm list packages");
    print.log("&#128221; pm list packages 返回:" + 结果.substring(0, 200) + "...");
    return 解析包名列表(结果);
}

function 获取第三方应用包名() {
    print.log("&#128269; 正在获取第三方应用包名...");
    var 结果 = 执行Shell("pm list packages -3");
    print.log("&#128221; pm list packages -3 返回:" + 结果.substring(0, 200) + "...");
   
    var packages = 解析包名列表(结果);
   
    if (packages.length === 0) {
      print.log("⚠ pm list packages -3 返回0个,尝试不带-3参数...");
      return 获取所有应用包名();
    }
    return packages;
}

function 卸载应用(pkg) {
    var 纯净包名 = pkg;
    if (纯净包名.indexOf("/") !== -1) {
      纯净包名 = 纯净包名.substring(0, 纯净包名.indexOf("/"));
    }
    if (纯净包名.indexOf(" ") !== -1) {
      纯净包名 = 纯净包名.substring(0, 纯净包名.indexOf(" "));
    }
    if (纯净包名.indexOf("(") !== -1) {
      纯净包名 = 纯净包名.substring(0, 纯净包名.indexOf("("));
    }
    纯净包名 = 纯净包名.trim();
   
    print.log("&#128260; 正在卸载:" + pkg + " -> 纯净包名:" + 纯净包名);
   
    var 结果 = 执行Shell("pm uninstall " + 纯净包名);
    var 结果字符串 = "" + 结果;
    print.log("&#128221; 卸载返回:" + 结果字符串);
   
    if (结果字符串.indexOf("Success") !== -1 || 结果字符串.indexOf("success") !== -1) {
      print.log("✓ 卸载成功:" + 纯净包名);
      return true;
    } else if (结果字符串.indexOf("not installed") !== -1 || 结果字符串.indexOf("Unknown package") !== -1) {
      print.log("⚠ 未安装或已卸载:" + 纯净包名);
      return false;
    } else if (结果字符串.indexOf("Permission denied") !== -1) {
      print.log("⚠ 权限不足,尝试使用su...");
      结果 = 执行Shell("su -c 'pm uninstall " + 纯净包名 + "'");
      结果字符串 = "" + 结果;
      print.log("&#128221; su卸载返回:" + 结果字符串);
      if (结果字符串.indexOf("Success") !== -1 || 结果字符串.indexOf("success") !== -1) {
            print.log("✓ 使用su卸载成功:" + 纯净包名);
            return true;
      }
      print.log("✗ 权限不足,无法卸载:" + 纯净包名);
      return false;
    } else {
      print.log("✗ 卸载失败:" + 纯净包名 + ",返回:" + 结果字符串.trim());
      return false;
    }
}

print.log("\n--- 步骤1:开始实时批量卸载 ---");
var 成功数 = 0;
var 失败数 = 0;
var 已卸载列表 = [];
var 未卸载列表 = [];
var 已尝试集合 = {};

while (true) {
    var 待卸载列表 = 获取第三方应用包名();
   
    print.log("\n&#128203; 当前待卸载应用共 " + 待卸载列表.length + " 个");
    if (待卸载列表.length > 0) {
      print.log("   列表:" + 待卸载列表.join(", "));
    }
   
    if (待卸载列表.length === 0) {
      print.log("✓ 未找到可卸载的应用,结束卸载");
      break;
    }
   
    var 找到新应用 = false;
    for (var i = 0; i < 待卸载列表.length; i++) {
      var pkg = 待卸载列表;
      
      if (!已尝试集合) {
            找到新应用 = true;
            已尝试集合 = true;
            
            var success = 卸载应用(pkg);
            if (success) {
                成功数++;
                已卸载列表.push(pkg);
            } else {
                失败数++;
                未卸载列表.push(pkg);
            }
            
            sleep.second(1);
            break;
      } else {
            print.log("⚠ " + pkg + " 已尝试过,跳过");
      }
    }
   
    if (!找到新应用) {
      print.log("✓ 所有应用都已尝试过,结束卸载");
      break;
    }
}

print.log("\n--- 步骤2:卸载结果统计 ---");
print.log("&#128202; 卸载统计:");
print.log("✅ 成功:" + 成功数 + " 个");
print.log("❌ 失败:" + 失败数 + " 个");

if (已卸载列表.length > 0) {
    print.log("\n✅ 成功卸载的应用:");
    for (var i = 0; i < 已卸载列表.length; i++) {
      print.log("" + (i + 1) + ". " + 已卸载列表);
    }
}

if (未卸载列表.length > 0) {
    print.log("\n❌ 未卸载成功的应用:");
    for (var i = 0; i < 未卸载列表.length; i++) {
      print.log("" + (i + 1) + ". " + 未卸载列表);
    }
    print.log("\n⚠ 提示:失败的应用可能是系统应用或需要特殊权限才能卸载");
}

print.log("\n===== 一键删除所有应用示例结束 =====");

页: [1]
查看完整版本: AIWROK软件代理模式一键删除桌面所有APP版示例