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

废话不说,留着自己以后查找方便,要实现在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 block
				e.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;

    }


以上代码来自网络整理

猜你喜欢

转载自blog.csdn.net/NN955/article/details/48367385