场景:
当应用隐藏在后台而没有关闭,通过本身的悬浮窗体来唤起。
方法:
通过ActivityManager获取RunningTasks,获取应用对应的task,再通过ActivityManager的moveTaskToFront()方法来把应用唤起到前台。
代码:
判断应用是否已经在前台了
public boolean IsForeground(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (tasks != null && !tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
还要添加权限
<uses-permission android:name="android.permission.GET_TASKS"/>
唤起应用
if(IsForeground(this) == false)
{
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE) ;
am.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
}