Android app 运行时按了Home键,进入到另一程序,此程序中再调用原来程序,回到原来页面的方法:
- ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
- ComponentName appTopActivity = null;
- List<RunningTaskInfo> infos = manager.getRunningTasks(100);//获取当前正在运行的应用列表
- for (RunningTaskInfo info : infos) {
- System.out.println("topActivity:" + info.topActivity.getPackageName() + " baseActivity:" + info.baseActivity.getPackageName());
- //判断原app是否还在运行
- if (info.topActivity.getPackageName().equals(appName)
- && info.baseActivity.getPackageName().equals(appName)) {
- appTopActivity = info.topActivity;
- }
- }
- if(appTopActivity != null){
- Intent in = new Intent();
- in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //在receiver或者service里新建activity都要添加这个属性,
- in.setComponent(appTopActivity);
- //使用addFlags,而不是setFlags
- in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //清除掉Task栈需要显示Activity之上的其他activity
- in.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); //加上这个才不会新建立一个Activity,而是显示旧的
- context.startActivity(in);
- }