@Override
public void onBackPressed() {
ResolveInfo launcherResolve=
queryCurrentLauncher();
Intent intent=
new Intent();
intent.addCategory(Intent.ACTION_MAIN);
ComponentName componentName=
new ComponentName(launcherResolve.activityInfo.packageName,launcherResolve.activityInfo.name);
intent.setComponent(componentName);
startActivitySafely(intent);
}
private void startActivitySafely(Intent intent){
try{
startActivity(intent);
Toast.makeText(this, "切换到后台成功"
, Toast.LENGTH_SHORT).show();
}catch (Exception e){
Toast.makeText(this, "切换到后台失败"
, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
private ResolveInfo queryCurrentLauncher() {
Intent launcherIntent =
new Intent(Intent.ACTION_MAIN);
launcherIntent.addCategory(Intent.CATEGORY_HOME);
launcherIntent.addCategory(Intent.CATEGORY_DEFAULT);
List<ResolveInfo> launcherInfoList =
getPackageManager().queryIntentActivities(launcherIntent, PackageManager.MATCH_DEFAULT_ONLY);
ResolveInfo launcherResolveInfo =
null;
ActivityManager activityManager =
(ActivityManager) getSystemService(Service.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(30
);
Iterator<ActivityManager.RunningTaskInfo> itInfo =
tasks.iterator();
while (itInfo.hasNext()) {
ActivityManager.RunningTaskInfo info =
itInfo.next();
for (ResolveInfo resolveInfo : launcherInfoList) {
String name1 =
info.topActivity.getClassName();
String namme2 =
resolveInfo.activityInfo.name;
if (name1.equals(namme2)) {
//获取当前使用的桌面
launcherResolveInfo =
resolveInfo;
return launcherResolveInfo;
}
}
}
return launcherResolveInfo;
}
转载于:https://www.cnblogs.com/xushihai/p/4818397.html
相关资源:Android实例之程序切换到后台及从后台切换到前台实现