am e6a4b445: am 3581f4c9: Merge "Avoid crashing on startup when policy forbids lockscreen camera." into lmp-mr1-dev

* commit 'e6a4b445944489d67d40c8f52322fb149290fcf8':
  Avoid crashing on startup when policy forbids lockscreen camera.
This commit is contained in:
Dan Sandler
2015-03-06 00:21:47 +00:00
committed by Android Git Automerger
2 changed files with 15 additions and 1 deletions

View File

@@ -59,6 +59,7 @@ import android.service.notification.NotificationListenerService.RankingMap;
import android.service.notification.StatusBarNotification; import android.service.notification.StatusBarNotification;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.util.Slog;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.SparseBooleanArray; import android.util.SparseBooleanArray;
import android.view.Display; import android.view.Display;
@@ -2175,6 +2176,14 @@ public abstract class BaseStatusBar extends SystemUI implements
} }
public boolean isKeyguardSecure() { public boolean isKeyguardSecure() {
if (mStatusBarKeyguardViewManager == null) {
// startKeyguard() hasn't been called yet, so we don't know.
// Make sure anything that needs to know isKeyguardSecure() checks and re-checks this
// value onVisibilityChanged().
Slog.w(TAG, "isKeyguardSecure() called before startKeyguard(), returning false",
new Throwable());
return false;
}
return mStatusBarKeyguardViewManager.isSecure(); return mStatusBarKeyguardViewManager.isSecure();
} }
} }

View File

@@ -220,6 +220,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
public void setPhoneStatusBar(PhoneStatusBar phoneStatusBar) { public void setPhoneStatusBar(PhoneStatusBar phoneStatusBar) {
mPhoneStatusBar = phoneStatusBar; mPhoneStatusBar = phoneStatusBar;
updateCameraVisibility(); // in case onFinishInflate() was called too early
} }
private Intent getCameraIntent() { private Intent getCameraIntent() {
@@ -231,6 +232,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
} }
private void updateCameraVisibility() { private void updateCameraVisibility() {
if (mCameraImageView == null) {
// Things are not set up yet; reply hazy, ask again later
return;
}
ResolveInfo resolved = mContext.getPackageManager().resolveActivityAsUser(getCameraIntent(), ResolveInfo resolved = mContext.getPackageManager().resolveActivityAsUser(getCameraIntent(),
PackageManager.MATCH_DEFAULT_ONLY, PackageManager.MATCH_DEFAULT_ONLY,
mLockPatternUtils.getCurrentUser()); mLockPatternUtils.getCurrentUser());
@@ -253,7 +258,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
private boolean isCameraDisabledByDpm() { private boolean isCameraDisabledByDpm() {
final DevicePolicyManager dpm = final DevicePolicyManager dpm =
(DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE); (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
if (dpm != null) { if (dpm != null && mPhoneStatusBar != null) {
try { try {
final int userId = ActivityManagerNative.getDefault().getCurrentUser().id; final int userId = ActivityManagerNative.getDefault().getCurrentUser().id;
final int disabledFlags = dpm.getKeyguardDisabledFeatures(null, userId); final int disabledFlags = dpm.getKeyguardDisabledFeatures(null, userId);