安卓AIWROK获取包名所有方法汇总
安卓AIWROK获取包名所有方法汇总/*
* ============================================================
*安卓AIWROK 获取包名所有方法汇总
*整理日期: 2026-07-29
*涵盖: 代理模式 / 无碍模式 / HID模式 / 通用API / 原生Android API
*样式: 黑白极简 · 几何排版 · 层次分明
* ============================================================ */
// ========== 工具函数 ==========
function 清理shell输出(raw) {
if (!raw) return "";
var str = "" + raw;
if (str.indexOf("successMsg:") === 0) {
str = str.substring("successMsg:".length);
}
var errIdx = str.lastIndexOf(",errorMsg:");
if (errIdx !== -1) {
str = str.substring(0, errIdx);
}
return str;
}
function 获取列表大小(list) {
if (!list) return 0;
try {
if (typeof list.size === "function") return list.size();
if (typeof list.length === "number") return list.length;
if (list.getClass && list.getClass().isArray()) {
return java.lang.reflect.Array.getLength(list);
}
} catch (e) {}
return 0;
}
function 获取列表元素(list, index) {
if (!list) return null;
try {
if (list.get) return list.get(index);
if (list !== undefined) return list;
} catch (e) {}
return null;
}
function 安全截取(str, maxLen) {
if (!str) return "";
var s = "" + str;
if (isNaN(maxLen) || maxLen <= 0) return s;
if (s.length <= maxLen) return s;
return s.substring(0, maxLen) + "...";
}
// ========== 样式函数 ==========
var W = 56; // 输出宽度
function 顶部框(标题) {
var line = "";
for (var i = 0; i < W - 2; i++) line += "━";
printl("┏" + line + "┓");
var padding = Math.floor((W - 2 - 标题.length) / 2);
var p = "";
for (var i = 0; i < padding; i++) p += " ";
var rightPad = "";
var total = padding * 2 + 标题.length;
for (var i = 0; i < (W - 2 - total); i++) rightPad += " ";
printl("┃" + p + 标题 + rightPad + "┃");
var line2 = "";
for (var i = 0; i < W - 2; i++) line2 += "━";
printl("┗" + line2 + "┛");
}
function 分隔线() {
var line = "";
for (var i = 0; i < W - 2; i++) line += "─";
printl("├" + line + "┤");
}
function 细分隔() {
var line = "";
for (var i = 0; i < W; i++) line += "·";
printl(line);
}
function 底部框(标题) {
var line = "";
for (var i = 0; i < W - 2; i++) line += "━";
var padding = Math.floor((W - 2 - 标题.length) / 2);
var p = "";
for (var i = 0; i < padding; i++) p += " ";
var rightPad = "";
var total = padding * 2 + 标题.length;
for (var i = 0; i < (W - 2 - total); i++) rightPad += " ";
printl("┏" + line + "┓");
printl("┃" + p + 标题 + rightPad + "┃");
var line2 = "";
for (var i = 0; i < W - 2; i++) line2 += "━";
printl("┗" + line2 + "┛");
}
function 状态(文字) {
printl("┌─ " + 文字);
}
function 数据行(标签, 值) {
printl("│" + 标签 + "" + 值);
}
function 结果行(标签, 值) {
printl("● " + 标签 + "" + 值);
}
function 列表项(索引, 内容) {
var num = "" + 索引;
if (num.length < 2) num = " " + num;
printl("┊ " + num + "" + 内容);
}
// ========== 核心: 可靠获取顶端包名 ==========
function 可靠获取顶端包名() {
var 方法列表 = [
{ 名称: "app.getTopPackName()", 执行: function() { return app.getTopPackName(); } },
{ 名称: "app.getTopPackNameV2()", 执行: function() { return app.getTopPackNameV2(); } },
{ 名称: "app.getCurrentActivity()", 执行: function() { var v = app.getCurrentActivity(); return v ? v.split("/") : ""; } },
{ 名称: "app.getAgentCurrenAcitvity()", 执行: function() { var v = app.getAgentCurrenAcitvity(); return v ? v.split("/") : ""; } },
{ 名称: "ActivityManager.getRunningTasks()", 执行: function() {
try { importClass(android.app.ActivityManager); var am = context.getSystemService(context.ACTIVITY_SERVICE); var tasks = am.getRunningTasks(1); if (tasks && tasks.size() > 0) return tasks.get(0).topActivity.getPackageName(); } catch(e) {} return ""; } },
{ 名称: "ActivityManager.getRunningAppProcesses()", 执行: function() {
try { importClass(android.app.ActivityManager); var am = context.getSystemService(context.ACTIVITY_SERVICE); var procs = am.getRunningAppProcesses(); if (procs && procs.size() > 0) return procs.get(0).processName; } catch(e) {} return ""; } },
{ 名称: "shell dumpsys window", 执行: function() {
try { var raw = agent.shell("dumpsys window | grep mCurrentFocus"); var out = 清理shell输出(raw); var m = out.match(/(\w+\.\w+[\w.]*)\//); if (m) return m; } catch(e) {} return ""; } },
{ 名称: "shell dumpsys activity", 执行: function() {
try { var raw = agent.shell("dumpsys activity activities | grep mResumedActivity"); var out = 清理shell输出(raw); var m = out.match(/(\w+\.\w+[\w.]*)\//); if (m) return m; } catch(e) {} return ""; } }
];
for (var i = 0; i < 方法列表.length; i++) {
var r = "";
try { r = 方法列表.执行(); } catch(e) { r = ""; }
if (r && r.trim() !== "") {
return { 包名: r.trim(), 方法: 方法列表.名称, 序号: i + 1, 总数: 方法列表.length };
}
}
return { 包名: "", 方法: "无", 序号: 0, 总数: 方法列表.length };
}
function 可靠获取运行中进程() {
try {
importClass(android.app.ActivityManager);
var am = context.getSystemService(context.ACTIVITY_SERVICE);
var procs = am.getRunningAppProcesses();
if (procs && procs.size() > 0) {
var list = [];
for (var i = 0; i < procs.size(); i++) {
var p = procs.get(i);
list.push({ 包名: p.processName, PID: p.pid, 重要性: p.importance });
}
return { 方法: "ActivityManager.getRunningAppProcesses()", 列表: list };
}
} catch(e) {}
try {
var raw = agent.shell("ps -A | grep u0_a | grep -v :");
var out = 清理shell输出(raw);
var ln = out.split("\n");
var list = [];
for (var i = 0; i < ln.length; i++) {
var m = ln.match(/\s(\w+\.\w+[\w.]*)$/);
if (m) list.push({ 包名: m, PID: "", 重要性: "" });
}
if (list.length > 0) return { 方法: "shell ps", 列表: list };
} catch(e) {}
return { 方法: "无", 列表: [] };
}
// ════════════════════════════════════════════════════════
//启动
// ════════════════════════════════════════════════════════
顶部框("AIWROK获取包名方法总汇");
printl("模式: 代理 / 无碍 / HID / 原生API / Shell");
printl("机制: 自动降级框架空值时切换可靠方法");
printl("");
// ── 核心预演 ──
状态("核心预演: 自动降级链获取顶端包名");
var pre = 可靠获取顶端包名();
if (pre.包名) {
结果行("命中", pre.方法 + " (" + pre.序号 + "/" + pre.总数 + ")");
数据行("包名", pre.包名);
} else {
结果行("全部8种方法均返回空", "");
}
printl("");
状态("5秒后开始逐方法演示...");
sleep.second(5);
// ════════════════════════════════════════════════════════
//第一部分: 通用 API
// ════════════════════════════════════════════════════════
顶部框("第一部分通用 app.* API");
// 1.1
状态("1.1app.getTopPackName()");
var r1 = app.getTopPackName();
if (r1 && r1.trim()) { 结果行("返回", r1); }
else { 结果行("空值", "降级 -> " + 可靠获取顶端包名().方法); }
sleep.second(3);
// 1.2
状态("1.2app.getTopPackNameV2()");
var r2 = app.getTopPackNameV2();
if (r2 && r2.trim()) { 结果行("返回", r2); }
else { 结果行("空值", "降级 -> " + 可靠获取顶端包名().方法); }
sleep.second(3);
// 1.3
状态("1.3app.getPackName()");
var r3 = app.getPackName();
if (r3 && r3.trim()) { 结果行("自身包名", r3); }
else {
try { var s3 = context.getPackageName(); 结果行("context.getPackageName()", s3); }
catch(e) { 结果行("全部失败", e.message); }
}
sleep.second(3);
// 1.4
状态("1.4app.getAgentCurrenAcitvity()[代理模式]");
var r4 = app.getAgentCurrenAcitvity();
if (r4 && r4.trim()) { 结果行("Activity", r4); 数据行("包名", r4.split("/")); }
else {
结果行("空值", "代理未连接 -> 尝试无碍模式");
try {
var r4b = app.getCurrentActivity();
if (r4b && r4b.trim()) { 结果行("无碍Activity", r4b); 数据行("包名", r4b.split("/")); }
else { 结果行("无碍也空", "降级 -> " + 可靠获取顶端包名().包名); }
} catch(e) { 结果行("失败", e.message); }
}
sleep.second(3);
// 1.5
状态("1.5app.getCurrentActivity()[无碍模式]");
var r5 = app.getCurrentActivity();
if (r5 && r5.trim()) { 结果行("Activity", r5); 数据行("包名", r5.split("/")); }
else { 结果行("空值", ""); }
sleep.second(3);
// 1.6
状态("1.6app.getAllApp()[所有已安装应用]");
var r6 = app.getAllApp();
var c6 = 获取列表大小(r6);
数据行("应用数", "" + c6);
for (var i = 0; i < Math.min(c6, 8); i++) {
列表项(i, "" + 获取列表元素(r6, i));
}
if (c6 > 8) printl("┊... 共" + c6 + "个, 仅显示前8");
sleep.second(3);
// 1.7
状态("1.7app.logRunningProcesses()[运行中进程]");
var r7 = app.logRunningProcesses();
if (r7 && r7.trim()) {
try {
var obj = JSON.parse("" + r7);
if (obj.processes) {
数据行("进程数", "" + obj.processes.length);
for (var i = 0; i < Math.min(obj.processes.length, 5); i++) {
列表项(i, obj.processes.processName + " (PID:" + obj.processes.pid + ")");
}
}
} catch(e) { 数据行("原始", 安全截取(r7, 200)); }
} else {
var r7b = 可靠获取运行中进程();
结果行("空值", "降级 -> " + r7b.方法);
数据行("进程数", "" + r7b.列表.length);
for (var i = 0; i < Math.min(r7b.列表.length, 5); i++) {
列表项(i, r7b.列表.包名);
}
}
sleep.second(3);
// 1.8
状态("1.8app.getAppName(pkg)[包名->应用名]");
var r8 = app.getAppName("com.tencent.mm");
if (r8 && r8.trim()) { 结果行("com.tencent.mm", r8); }
else { 结果行("空值", "应用可能未安装"); }
sleep.second(3);
// 1.9
状态("1.9HID模式hid.getTopPackName() / hid.getCurrentActivity()");
try {
var h1 = hid.getTopPackName();
数据行("hid.getTopPackName()", "" + (h1 || "(空)"));
var h2 = hid.getCurrentActivity();
数据行("hid.getCurrentActivity()", "" + (h2 || "(空)"));
} catch(e) { 结果行("HID错误", e.message + " (未连接HID硬件)"); }
sleep.second(3);
底部框("第一部分完成");
sleep.second(3);
// ════════════════════════════════════════════════════════
//第二部分: Shell 命令方法
// ════════════════════════════════════════════════════════
顶部框("第二部分代理模式 Shell 命令");
// 2.1
状态("2.1ps -A[所有进程]");
var s1 = 清理shell输出(agent.shell("ps -A"));
var l1 = s1.split("\n");
数据行("总行数", "" + l1.length);
for (var i = 0; i < Math.min(l1.length, 5); i++) printl("│" + l1);
sleep.second(3);
// 2.2
状态("2.2ps -A | grep u0_a[第三方应用进程]");
var s2 = 清理shell输出(agent.shell("ps -A | grep u0_a | grep -v :"));
var l2 = s2.split("\n");
var p2 = [];
for (var i = 0; i < l2.length; i++) {
var m = l2.match(/\s(\w+\.\w+[\w.]*)$/);
if (m) p2.push(m);
}
数据行("进程数", "" + p2.length);
for (var i = 0; i < Math.min(p2.length, 10); i++) 列表项(i, p2);
sleep.second(3);
// 2.3
状态("2.3pm list packages[所有已安装包名]");
var s3 = 清理shell输出(agent.shell("pm list packages"));
var l3 = [];
var seg = s3.split("package:");
for (var i = 1; i < seg.length; i++) {
var pkg = seg.trim();
var nl = pkg.indexOf("\n");
if (nl !== -1) pkg = pkg.substring(0, nl).trim();
if (pkg) l3.push(pkg);
}
数据行("包数", "" + l3.length);
for (var i = 0; i < Math.min(l3.length, 10); i++) 列表项(i, l3);
if (l3.length > 10) printl("┊... 共" + l3.length + "个, 仅显示前10");
sleep.second(3);
// 2.4
状态("2.4pm list packages -3[仅第三方]");
var s4 = 清理shell输出(agent.shell("pm list packages -3"));
var l4 = [];
var seg4 = s4.split("package:");
for (var i = 1; i < seg4.length; i++) {
var pkg = seg4.trim();
var nl = pkg.indexOf("\n");
if (nl !== -1) pkg = pkg.substring(0, nl).trim();
if (pkg) l4.push(pkg);
}
数据行("第三方数", "" + l4.length);
for (var i = 0; i < Math.min(l4.length, 10); i++) 列表项(i, l4);
sleep.second(3);
// 2.5
状态("2.5dumpsys window | grep mCurrentFocus[当前窗口]");
try {
var s5 = 清理shell输出(agent.shell("dumpsys window | grep mCurrentFocus"));
数据行("原始", 安全截取(s5, 120));
var m5 = s5.match(/(\w+\.\w+[\w.]*)\//);
结果行("包名", m5 ? m5 : "(未识别)");
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 2.6
状态("2.6dumpsys activity activities | grep mResumedActivity");
try {
var s6 = 清理shell输出(agent.shell("dumpsys activity activities | grep mResumedActivity"));
数据行("原始", 安全截取(s6, 120));
var m6 = s6.match(/(\w+\.\w+[\w.]*)\//);
结果行("包名", m6 ? m6 : "(未识别)");
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 2.7
状态("2.7pidof com.tencent.mm[进程检测]");
var s7 = 清理shell输出(agent.shell("pidof com.tencent.mm"));
if (s7 && s7.trim()) { 结果行("运行中", "PID: " + s7.trim()); }
else { 结果行("未运行", "com.tencent.mm"); }
sleep.second(3);
底部框("第二部分完成");
sleep.second(3);
// ════════════════════════════════════════════════════════
//第三部分: Android 原生 API
// ════════════════════════════════════════════════════════
顶部框("第三部分Android 原生 API");
importClass(android.app.ActivityManager);
importClass(android.content.Context);
importClass(android.content.pm.PackageManager);
importClass(android.app.usage.UsageStatsManager);
importClass(android.app.usage.UsageStats);
var am = context.getSystemService(context.ACTIVITY_SERVICE);
// 3.1
状态("3.1ActivityManager.getRunningTasks()[任务栈]");
try {
var tasks = am.getRunningTasks(100);
var tc = 获取列表大小(tasks);
数据行("任务数", "" + tc);
for (var i = 0; i < Math.min(tc, 5); i++) {
var t = 获取列表元素(tasks, i);
if (t && t.topActivity) {
列表项(i, t.topActivity.getPackageName() + " / " + t.topActivity.getClassName());
}
}
if (tc > 0) 结果行("顶端包名", "" + 获取列表元素(tasks, 0).topActivity.getPackageName());
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 3.2
状态("3.2ActivityManager.getRunningAppProcesses()[最可靠]");
try {
var procs = am.getRunningAppProcesses();
var pc = 获取列表大小(procs);
数据行("进程数", "" + pc);
var pnames = [];
for (var i = 0; i < pc; i++) {
var p = 获取列表元素(procs, i);
if (p) {
pnames.push(p.processName);
if (i < 10) 列表项(i, p.processName + " (PID:" + p.pid + ", 重要性:" + p.importance + ")");
}
}
数据行("运行中包名", pnames.join(", "));
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 3.3
状态("3.3PackageManager.getInstalledPackages()[所有应用]");
try {
var pm = context.getPackageManager();
var pkgs = pm.getInstalledPackages(0);
var pk = 获取列表大小(pkgs);
数据行("已安装", "" + pk + " 个");
for (var i = 0; i < Math.min(pk, 5); i++) {
var info = 获取列表元素(pkgs, i);
if (info) {
var nm = pm.getApplicationLabel(info.applicationInfo).toString();
列表项(i, nm + " (" + info.packageName + ") v" + info.versionName);
}
}
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 3.4
状态("3.4应用名 -> 包名[反查]");
function 反查包名(应用名) {
try {
var pm2 = context.getPackageManager();
var list = pm2.getInstalledPackages(0);
var sz = 获取列表大小(list);
for (var i = 0; i < sz; i++) {
var info = 获取列表元素(list, i);
if (info) {
var nm = pm2.getApplicationLabel(info.applicationInfo).toString();
if (nm === 应用名) return info.packageName;
}
}
} catch(e) {}
return null;
}
var wb = 反查包名("微信");
结果行("微信", "" + (wb || "(未找到)"));
var dy = 反查包名("抖音");
结果行("抖音", "" + (dy || "(未找到)"));
sleep.second(3);
// 3.5
状态("3.5UsageStatsManager[最近使用应用]");
try {
var usm = context.getSystemService(context.USAGE_STATS_SERVICE);
var now = Packages.java.lang.System.currentTimeMillis();
var stats = usm.queryUsageStats(
Packages.android.app.usage.UsageStatsManager.INTERVAL_DAILY,
now - 1000 * 60 * 60 * 1,
now
);
if (stats && !stats.isEmpty()) {
var Collections = Packages.java.util.Collections;
var Comparator = Packages.java.util.Comparator;
Collections.sort(stats, new Comparator({
compare: function(a, b) {
return java.lang.Long.compare(b.getLastTimeUsed(), a.getLastTimeUsed());
}
}));
var currentPkg = context.getPackageName();
var cnt = 0;
var sz = 获取列表大小(stats);
for (var i = 0; i < sz && cnt < 5; i++) {
var s = 获取列表元素(stats, i);
if (s && s.getPackageName() !== currentPkg) {
列表项(cnt, s.getPackageName() + "最后使用: " + new java.util.Date(s.getLastTimeUsed()));
cnt++;
}
}
}
} catch(e) { 结果行("失败", e.message + " (可能缺少权限)"); }
sleep.second(3);
// 3.6
状态("3.6context.getPackageName()");
try {
var self = context.getPackageName();
数据行("包名", self);
var pm3 = context.getPackageManager();
var info = pm3.getApplicationInfo(self, 0);
var selfName = pm3.getApplicationLabel(info).toString();
var ver = pm3.getPackageInfo(self, 0);
数据行("应用名", selfName);
数据行("版本", ver.versionName + " (code:" + ver.versionCode + ")");
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
// 3.7
状态("3.7应用运行检测[双重验证]");
function 检查是否运行(目标包名) {
try {
var am2 = context.getSystemService(context.ACTIVITY_SERVICE);
var pl = am2.getRunningAppProcesses();
var ps = 获取列表大小(pl);
for (var i = 0; i < ps; i++) {
var p = 获取列表元素(pl, i);
if (p && p.processName === 目标包名) return "运行中 (PID:" + p.pid + ")";
}
var ts = am2.getRunningTasks(50);
var tsz = 获取列表大小(ts);
for (var i = 0; i < tsz; i++) {
var t = 获取列表元素(ts, i);
if (t && t.topActivity && t.topActivity.getPackageName() === 目标包名) return "运行中(任务栈)";
}
return "未运行";
} catch(e) { return "检查失败: " + e.message; }
}
结果行("com.tencent.mm", 检查是否运行("com.tencent.mm"));
结果行("com.ss.android.ugc.aweme", 检查是否运行("com.ss.android.ugc.aweme"));
sleep.second(3);
底部框("第三部分完成");
sleep.second(3);
// ════════════════════════════════════════════════════════
//第四部分: 从 UI/XML 提取
// ════════════════════════════════════════════════════════
顶部框("第四部分从 UI / XML 提取包名");
状态("4.1agent.getXml()");
try {
var xml = agent.getXml();
var xmlStr = "" + xml;
var re = /package="([^"]+)"/g;
var m;
var list = [];
while ((m = re.exec(xmlStr)) !== null) {
if (list.indexOf(m) === -1) list.push(m);
}
数据行("提取数", "" + list.length);
for (var i = 0; i < list.length; i++) 列表项(i, list);
if (list.length === 0) 结果行("未提取到", "XML长度: " + xmlStr.length + " 字符");
} catch(e) { 结果行("失败", e.message); }
sleep.second(3);
底部框("第四部分完成");
sleep.second(3);
// ════════════════════════════════════════════════════════
//第五部分: 总结
// ════════════════════════════════════════════════════════
顶部框("第五部分总结与方法索引");
细分隔();
状态("可靠方法 (实测可工作)");
结果行(" 1", "ActivityManager.getRunningAppProcesses()");
结果行(" 2", "ActivityManager.getRunningTasks()");
结果行(" 3", "PackageManager.getInstalledPackages()");
结果行(" 4", "agent.shell('ps -A | grep u0_a')");
结果行(" 5", "agent.shell('pm list packages -3')");
结果行(" 6", "agent.shell('dumpsys window')");
结果行(" 7", "app.getCurrentActivity()[无碍模式]");
结果行(" 8", "context.getPackageName()");
细分隔();
状态("不稳定方法 (框架封装, 可能返回空)");
结果行(" 1", "app.getTopPackName()");
结果行(" 2", "app.getTopPackNameV2()");
结果行(" 3", "app.getPackName()");
结果行(" 4", "app.getAgentCurrenAcitvity()");
结果行(" 5", "app.logRunningProcesses()");
结果行(" 6", "hid.getTopPackName()[需HID硬件]");
细分隔();
状态("场景快速索引");
数据行("获取顶端包名", "可靠获取顶端包名()[自动降级8种]");
数据行("获取全部应用", "agent.shell('pm list packages -3')");
数据行("获取运行中进程", "ActivityManager.getRunningAppProcesses()");
数据行("检查某App运行", "检查是否运行('com.xxx.xxx')");
数据行("应用名->包名", "反查包名('微信')");
数据行("AIWORK自身信息", "context.getPackageName() + PackageManager");
细分隔();
底部框("全部演示完成");
页:
[1]