diff --git a/core/java/com/android/internal/policy/IFaceLockInterface.aidl b/core/java/com/android/internal/policy/IFaceLockInterface.aidl index 921b8c7df88f7..3958cda6db1c3 100644 --- a/core/java/com/android/internal/policy/IFaceLockInterface.aidl +++ b/core/java/com/android/internal/policy/IFaceLockInterface.aidl @@ -23,4 +23,5 @@ interface IFaceLockInterface { void startUi(IBinder containingWindowToken, int x, int y, int width, int height); void stopUi(); void registerCallback(IFaceLockCallback cb); + void unregisterCallback(IFaceLockCallback cb); } diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index b91503bffb93b..ebf380a1f9fe2 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -782,6 +782,15 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler mUnlockScreen = null; } mUpdateMonitor.removeCallback(this); + if (mFaceLockService != null) { + try { + mFaceLockService.unregisterCallback(mFaceLockCallback); + } catch (RemoteException e) { + // Not much we can do + } + stopFaceLock(); + mFaceLockService = null; + } } private boolean isSecure() { @@ -1206,6 +1215,13 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler if (mBoundToFaceLockService) { if (DEBUG) Log.d(TAG, "before unbind from FaceLock service"); + if (mFaceLockService != null) { + try { + mFaceLockService.unregisterCallback(mFaceLockCallback); + } catch (RemoteException e) { + // Not much we can do + } + } mContext.unbindService(mFaceLockConnection); if (DEBUG) Log.d(TAG, "after unbind from FaceLock service"); mBoundToFaceLockService = false;