Should check isDeviceSecure in shouldConfirmCredentials
The NPE is because createConfirmDeviceCredentialIntent returns a null intent when it founds that user does not set a secure lock. So the fix is we should check is the user set a secure lock screen as well. The reason the crash only happens in multi-window flow because we have null checking in the normal flow (i.e. interceptWithConfirmCredentialsIfNeeded). But I think we better check it explicitly. Bug: 28716456 Change-Id: Ib204cd02c0007bd1df36908bb3b5254ec4ffb914
This commit is contained in:
@@ -620,6 +620,10 @@ class ActivityStarter {
|
|||||||
.getSystemService(Context.KEYGUARD_SERVICE);
|
.getSystemService(Context.KEYGUARD_SERVICE);
|
||||||
final Intent credential =
|
final Intent credential =
|
||||||
km.createConfirmDeviceCredentialIntent(null, null, userId);
|
km.createConfirmDeviceCredentialIntent(null, null, userId);
|
||||||
|
// For safety, check null here in case users changed the setting after the checking.
|
||||||
|
if (credential == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final ActivityRecord activityRecord = targetStack.topRunningActivityLocked();
|
final ActivityRecord activityRecord = targetStack.topRunningActivityLocked();
|
||||||
if (activityRecord != null) {
|
if (activityRecord != null) {
|
||||||
final IIntentSender target = mService.getIntentSenderLocked(
|
final IIntentSender target = mService.getIntentSenderLocked(
|
||||||
|
|||||||
@@ -1468,7 +1468,7 @@ final class UserController {
|
|||||||
}
|
}
|
||||||
final KeyguardManager km = (KeyguardManager) mService.mContext
|
final KeyguardManager km = (KeyguardManager) mService.mContext
|
||||||
.getSystemService(KEYGUARD_SERVICE);
|
.getSystemService(KEYGUARD_SERVICE);
|
||||||
return km.isDeviceLocked(userId);
|
return km.isDeviceLocked(userId) && km.isDeviceSecure(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isLockScreenDisabled(@UserIdInt int userId) {
|
boolean isLockScreenDisabled(@UserIdInt int userId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user