private void checkPasswordBeforeSwitch(int mTargetUserId) {
Intent intent;
// private boolean needCloseSdcardFs(int arg2) { return 0; }
if(this.needCloseSdcardFs(mTargetUserId)) {
intent = new Intent(((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);
}
else if(2 == v1) {
ToastUtils.makeText(((Context)this), this.getResources().getString(0x7F09014B), 0).show(); // Can't switch between spaces during a call
}
else if(3 == v1) {
ToastUtils.makeText(((Context)this), this.getResources().getString(0x7F09018B), 0).show(); // Switching to Second space is restricted by parental controls
}
else if(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 = new Intent(((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, new UserHandle(CrossUserUtils.getCurrentUserId()));
}
}
这个if块的第一句代码就是调用switchUser(),一共有三个判断
public int switchUser(int mTargetUserId) {
if(DeviceUtil.isPhoneCalling(this.mContext)) {
Log.d("SpaceManagerWrapper", "Can\'t switch user to " + mTargetUserId + " when calling.");
return 2;
}
if(MiuiSettings$Secure.isGreenKidActive(this.mContext.getContentResolver())) {
Log.d("SpaceManagerWrapper", "Can\'t switch user to " + mTargetUserId + " when green kid active.");
return 3;
}
if(MiuiSettings$System.isSuperSaveModeOpen(this.mContext, 0)) {
Log.d("SpaceManagerWrapper", "Can\'t switch user to " + mTargetUserId + " when super power active.");
return 4;
}
if(this.mSpaceManager.switchUser(mTargetUserId)) {
return 0;
}
return 1;
}
第一个判断,如果当前有电话打进来或者正在接电话,不进行Space切换
CALL_STATE_STATE_IDLE = 0;
CALL_STATE_STATE_RUNNING = 1;
CALL_STATE_STATE_OFFHOOK = 2;
public static boolean isPhoneCalling(Context context) {
boolean result = true;
int callState = context.getSystemService("phone").getCallState();
if(callState != 1 && callState != 2) {
result = false;
}
return result;
}
import android.provider.MiuiSettings$Secure;
import android.provider.MiuiSettings$System;
if(MiuiSettings$Secure.isGreenKidActive(this.mContext.getContentResolver())) {
Log.d("SpaceManagerWrapper", "Can\'t switch user to " + mTargetUserId + " when green kid active.");
return 3;
}
if(MiuiSettings$System.isSuperSaveModeOpen(this.mContext, 0)) {
Log.d("SpaceManagerWrapper", "Can\'t switch user to " + mTargetUserId + " when super power active.");
return 4;
}