非Activity启动一个Activity

发布时间 2023-06-27 15:40:53作者: 安妍

 

场景: PhoneWindowManager.java中处理一个按键事件:按键启动一个app中指定的一个扫码界面

方式:

    Context context = mContext;
   if (context != null) {
   Intent intent = new Intent();
  // intent.setClassName(new ComponentName("com.tripod.server","com.tripod.server.TargetActivity"));
       //组件参数: 组件包名,组件全限定类名
     intent.setComponent(new ComponentName("com.shuxiang.saas", "com.lesoft.wuye.CameraView.WeChatQRCodeActivity"));
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //对于非Activity跳转Activity , Intent.Flag必须设置为FLAG_ACTIVITY_NEW_TASK
     context.startActivity(intent); //获取上下文,启动跳转Activity
}

备注:当我们从一个非 Activity 上下文(例如在 PhoneWindowManager 中)启动一个 Activity 时,需要为该 Activity 创建一个新的任务栈。通过设置 FLAG_ACTIVITY_NEW_TASK 标志,我们告诉系统创建一个新的任务,并将目标 Activity 放置在该任务的根位置。

其它跳转Activity的场景同理;