废话不说,留着自己以后查找方便,要实现在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;
}
以上代码来自网络整理