在蜂窝及更高版本中,您可以像这样使用 MoveTaskToFront
//Bring Task to front with Android >= Honeycomb
if (Build.VERSION.SDK_INT >= 11) {
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
List<RunningTaskInfo> rt = am.getRunningTasks(Integer.MAX_VALUE);
for (int i = 0; i < rt.size(); i++)
{
// bring to front
if (rt.get(i).baseActivity.toShortString().indexOf("yourproject") > -1) {
am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
}
}
}
确保您的项目使用 Android v.11 或更高版本进行编译,以便此行不会因编译而中断:
am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
对于较旧的 Android 版本,您可以使用以下命令将任务移到前面:
Intent intent = new Intent(this, YourClass.class);//The class you want to show
startActivity(intent);
在 android 清单中添加以下内容
<!--The versions with which to compile-->
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11"/>
<!--The Activity you wish to bring forward-->
<activity android:name="YourClass" android:taskAffinity="" android:launchMode="singleTask" />
<!--User Permissions-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
onBackPressed()
最后,确保当您通过覆盖, DO NOT USE 将任务推回时moveTaskToBack()
,这将导致您的任务最终对用户不可见。而是使用以下内容:这将模拟主页按钮按下,这将有效地隐藏您的应用程序并显示主屏幕
@Override
public void onBackPressed() {
Utils.showToast(this, "Your application is running in the background");
/*Simulate Home Button Press*/
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
你去了,我希望这对你有用,并帮助一些人解决这个问题。