Android 返回键,不关闭应用,执行Home操作,有兼容性问题

150 阅读1分钟
vivo 机型版本:V2057A  
java.lang.IllegalStateException: Can‘t change activity type once set

设备机型:Redmi 系统版本:13
设备机型:Xiaomi 系统版本:12
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME,android.intent.category.DEFAULT] flg=0x10000000 }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // 不关闭应用,返回主界面
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME,android.intent.category.DEFAULT] flg=0x10000000 }
        try {
            startActivity(new Intent(Intent.ACTION_MAIN)
                    .addCategory(Intent.CATEGORY_HOME)
                    //vivo 机型版本:V2057A  修复:java.lang.IllegalStateException: Can‘t change activity type once set
                    .addCategory(Intent.CATEGORY_DEFAULT)
                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            );
            return false;
        }catch(Exception e) {
            try{
                startActivity(new Intent(Intent.ACTION_MAIN)
                        .addCategory(Intent.CATEGORY_HOME)
                        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                );
                return false;
            }catch (Exception ex) {
                return super.onKeyDown(keyCode, event);
            }
        }
    }
    return super.onKeyDown(keyCode, event);
}