接口名:
Context.startActivityAsUser()
作用:
在**指定用户(UserHandle)**下启动 Activity,
系统只在该用户空间解析 Intent,可避免主/分身选择器。
用法要点
- 指定目标用户:UserHandle.of(userId)
- 非 Activity 场景必须加:FLAG_ACTIVITY_NEW_TASK
- 仅系统级环境可用(system_server / system app)
使用效果:
- 精确启动主应用或分身应用
- 不弹出应用选择器
JavaScript实例:
// 用 startActivityAsUser 在 user 999(分身)启动微信 com.tencent.mm(WX_SHORTCUT)
var u = 999;
var s = "intent:#Intent;action=com.tencent.mm.action.WX_SHORTCUT;package=com.tencent.mm;end";
var r = "ok";
try {
var I = java.lang.Class.forName("android.content.Intent");
var U = java.lang.Class.forName("android.os.UserHandle");
var S = java.lang.Class.forName("java.lang.String");
var T = java.lang.Integer.TYPE;
var it = I.getMethod("parseUri", S, T).invoke(null, s, new java.lang.Integer(I.getField("URI_INTENT_SCHEME").getInt(null)));
it.addFlags(I.getField("FLAG_ACTIVITY_NEW_TASK").getInt(null));
var uh = U.getMethod("of", T).invoke(null, new java.lang.Integer(u));
context.getClass().getMethod("startActivityAsUser", I, U).invoke(context, it, uh);
} catch (e) {
r = "err_" + e;
}
r
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






暂无评论内容