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:
Tony Mak
2016-05-17 16:36:14 +01:00
parent 048cabdbcb
commit ae13e18c55
2 changed files with 5 additions and 1 deletions

View File

@@ -620,6 +620,10 @@ class ActivityStarter {
.getSystemService(Context.KEYGUARD_SERVICE);
final Intent credential =
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();
if (activityRecord != null) {
final IIntentSender target = mService.getIntentSenderLocked(

View File

@@ -1468,7 +1468,7 @@ final class UserController {
}
final KeyguardManager km = (KeyguardManager) mService.mContext
.getSystemService(KEYGUARD_SERVICE);
return km.isDeviceLocked(userId);
return km.isDeviceLocked(userId) && km.isDeviceSecure(userId);
}
boolean isLockScreenDisabled(@UserIdInt int userId) {