android根据packagename激活后台程序到前台/打开程序(与在luancher中点击应用图标效果相同)

来源:互联网 发布:上海短租 知乎 编辑:程序博客网 时间:2024/05/19 18:37

废话不说,留着自己以后查找方便,要实现在lunancher中的点击效果,(程序后台就激活到前台,而不是启动某一个activity新实例)关键是设置intent的flag,

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

                    | Intent.FLAG_ACTIVITY_NEW_TASK

                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

//这东西虽然没啥技术含量可是时间久了,记不住(也没必要记)在这记录一下用到回来查


启动或者激活后台正在运行的  程序

private void RunApp(Context context,String packageName) {      Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);    ActivityManager manager = (ActivityManager) context                .getSystemService(Context.ACTIVITY_SERVICE);        List<RunningTaskInfo> task_info = manager                .getRunningTasks(20);        String className = "";         for (int i = 0; i < task_info.size(); i++)         {          if (packageName.equals(task_info.get(i).topActivity.getPackageName()))          {           className = task_info.get(i).topActivity                   .getClassName();           //这里是指从后台返回到前台  前两个的是关键            intent.setAction(Intent.ACTION_MAIN);            intent.addCategory(Intent.CATEGORY_LAUNCHER);            try {intent.setComponent(new ComponentName(        context, Class.forName(className)));} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}//             intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT                    | Intent.FLAG_ACTIVITY_NEW_TASK                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);            context.startActivity(intent);            return ;         }      }      Intent intent2 = context.getPackageManager().getLaunchIntentForPackage(packageName);      context.startActivity(intent2);   }


判断当前应用程序处于前台还是后台/没运行

 /**     * 判断当前应用程序处于前台还是后台     * @param context     * @return 程序没有运行或者在后台运行 true,程序在前台运行返回false     */    public static boolean isApplicationBroughtToBackground(final Context context) {        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);        List<RunningTaskInfo> tasks = am.getRunningTasks(1);        if (!tasks.isEmpty()) {            ComponentName topActivity = tasks.get(0).topActivity;            if (!topActivity.getPackageName().equals(context.getPackageName())) {                return true;            }        }        return false;    }


以上代码来自网络整理

0 0
原创粉丝点击