问题现象描述
用以下代码返回桌面:
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
startActivity(homeIntent);
现象: 在低版本系统能正常返回到桌面,在Android 9 版本会报错,报错信息如下:
Fatal Exception: java.lang.IllegalStateException: Can’t change activity type once set: { mBounds=Rect(0, 0 - 1080, 2076) mAppBounds=Rect(0, 0 - 1080, 2076) mWindowingMode=fullscreen mActivityType=home} activityType=standard
解决方案
改成以下代码:
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
homeIntent.addCategory(Intent.CATEGORY_DEFAULT);
homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(homeIntent);
原因追查
google提交:
新增了ActivityType来判断应用是否能启动Home。
导致上述代码启动桌面会抛出异常。