privatevoidcheckPasswordBeforeSwitch(int mTargetUserId) {Intent intent;// private boolean needCloseSdcardFs(int arg2) { return 0; }if(this.needCloseSdcardFs(mTargetUserId)) { intent =newIntent(((Context)this),SdcardFsDialogActivity.class);intent.setFlags(0x10000000);this.startActivity(intent);return; }if(!this.mIsNeedcheckPassword||!SpaceManagerWrapper.getInstance().isSecure(mTargetUserId)) {int v1 =SpaceManagerWrapper.getInstance().switchUser(mTargetUserId);if(v1 ==0) {AnalyticsHelper.trackSwitchUser(mTargetUserId,this.mFromType); }elseif(2== v1) { ToastUtils.makeText(((Context)this), this.getResources().getString(0x7F09014B), 0).show(); // Can't switch between spaces during a call
}elseif(3== v1) { ToastUtils.makeText(((Context)this), this.getResources().getString(0x7F09018B), 0).show(); // Switching to Second space is restricted by parental controls
}elseif(4== v1) { ToastUtils.makeText(((Context)this), this.getResources().getString(0x7F0901CC), 0).show(); // Can't switch between spaces when Ultra battery saver is on
} }else { intent =newIntent(((Context)this),SwitchUserConfirmActivity.class);intent.addFlags(0x10008000);intent.putExtra("preference_key_user_id", mTargetUserId);intent.putExtra("com.miui.xspace.preference_delay_time",this.mDelayTime);intent.putExtra("com.miui.xspace.preference_from_type",this.mFromType);this.startActivityAsUser(intent,newUserHandle(CrossUserUtils.getCurrentUserId())); }}
这个if块的第一句代码就是调用switchUser(),一共有三个判断
publicintswitchUser(int mTargetUserId) {if(DeviceUtil.isPhoneCalling(this.mContext)) {Log.d("SpaceManagerWrapper","Can\'t switch user to "+ mTargetUserId +" when calling.");return2; }if(MiuiSettings$Secure.isGreenKidActive(this.mContext.getContentResolver())) {Log.d("SpaceManagerWrapper","Can\'t switch user to "+ mTargetUserId +" when green kid active.");return3; }if(MiuiSettings$System.isSuperSaveModeOpen(this.mContext,0)) {Log.d("SpaceManagerWrapper","Can\'t switch user to "+ mTargetUserId +" when super power active.");return4; }if(this.mSpaceManager.switchUser(mTargetUserId)) {return0; }return1;}
第一个判断,如果当前有电话打进来或者正在接电话,不进行Space切换
CALL_STATE_STATE_IDLE =0;CALL_STATE_STATE_RUNNING =1;CALL_STATE_STATE_OFFHOOK =2;publicstaticbooleanisPhoneCalling(Context context) {boolean result =true;int callState =context.getSystemService("phone").getCallState();if(callState !=1&& callState !=2) { result =false; }return result;}
importandroid.provider.MiuiSettings$Secure;importandroid.provider.MiuiSettings$System;if(MiuiSettings$Secure.isGreenKidActive(this.mContext.getContentResolver())) {Log.d("SpaceManagerWrapper","Can\'t switch user to "+ mTargetUserId +" when green kid active.");return3;}if(MiuiSettings$System.isSuperSaveModeOpen(this.mContext,0)) {Log.d("SpaceManagerWrapper","Can\'t switch user to "+ mTargetUserId +" when super power active.");return4;}