AChep / AcDisplay

AcDisplay is a new way of handling notifications in Android.
acdisplay.org
GNU General Public License v2.0
750 stars 226 forks source link

Having to enter password instead of fingerprint on Nexus 6P CM13 #144

Open osneven opened 7 years ago

osneven commented 7 years ago

When activating the lockscreen mode, trying to unlock the phone with the fingerprint reader, the normal CM lockscreen prompts for the password. This normally happens every 24 hours or so, but when using AcDisplay, it happens almost every hour.

sakshamsharma commented 7 years ago

I can confirm this happens for OnePlus 3T as well. The reason, as I understand, is Android's security policy of disabling fingerprint unlocks whenever the screen was locked by an app. Please verify that the issue only happens when you let AcDisplay turn off your screen (timeout).

@AChep are there any plans to fix this? There are some tricks for rooted phones I understand. Perhaps add them as an option? I moved back to stock lock screen without AcDisplay because of this issue :cry:

AChep commented 7 years ago

Unfortunately I don't really want to add another workaround and see it patched in next Android version. Sorry, guys.

sakshamsharma commented 7 years ago

Would it ever be patched though? As I understand, it has been there since 5.0, and being a security policy, it is unlikely it can be removed without exposing some vulnerability. Just mentioning.

Also, It may help to keep this issue open, for others who may stumble here.

Thanks!

flasd commented 7 years ago

Nova Launcher works around this by changing screen timeout to 5 seconds, showing a black screen and preventing touch interacting while screen is on. When screen locks, the screen timeout goes back to default and the security policy doesn't kick in, so we can use the fingerprint scanner. This is even better in amoled phones. Seems trivial to implement.

XChikuX commented 7 years ago

flasd's comment really should be implemented as a workaround. Please take this into consideration ACdisplay team. Show a pitch black #000 screen, Change screen timeout to 5 seconds, till it locks. Change it back to default.

This is what nova does. And it's wonderful.

flasd commented 7 years ago

@AChep could you do something like:

// pseudocode
if (userPref.respectSecurityPolicy) {
    android.provider.Settings.System.putInt(getContentResolver(),
         Settings.System.SCREEN_OFF_TIMEOUT, 5);

    ui.beBlack();

    onDeviceTimeout(
        android.provider.Settings.System.putInt(getContentResolver(),
            Settings.System.SCREEN_OFF_TIMEOUT, default);
    );
} else {
     // from source MainActivity.java 227
      DevicePolicyManager dpm = (DevicePolicyManager) 
          getSystemService(Context.DEVICE_POLICY_SERVICE);

       dpm.lockNow();
}

I don't really want to add another workaround and see it patched in next Android version. Sorry, guys.

I understand that creating a workaround for it to be patched by the next version of android sucks, but nowadays almost all new phones have fingerprint scanners and this security policy is a real deal breaker for the app.

And, (I'm not an Android developer) it seems easy to implement, 30 minutes, maybe? I'd love to help testing it.

If I was better with java i'd create a pull request, ow well.

Thanks for the attention though.

ivocass commented 6 years ago

@AChep Any news on this? Currently AcDisplay can't be used on new phones (>Nougat) because when it turns off the screen, it does so by locking the device (which then prevents it from being unlocked by fingerprint). Nova Launcher solved this long ago, as it's mentioned above.