安卓各类接口

接口名:

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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容