##关于Toast锁屏不显示
最近在做优化的时候碰到一个Toast不显示的问题:
设置的安全模块添加了面部解锁,使用人脸进行解锁时会占用摄像头资源,这样在锁屏条件下安全进相机(SecureCamera)概率性出错,提醒资源被占用问题。
暂时没有很好的解决办法,目前在后台面部解锁启用时禁止Secure模式进相机,通过接收人脸解锁广播,这个不难做到。客户要求在启用人脸解锁时,滑动无法进入相机时给个提示Toast。接下来,把这个Toast加到SystemUI模块,结果无论怎么修改,提示都不出现,且context以及message都没有问题,一时犯了难。
似乎一直忽略的问题,这时在显示Toast的时候,系统并未解锁,是不是Toast在未解锁上,直接用系统makeText并不能显示,果然经过多方查找验证,改用以下方式,在systemui lunchCamera的地方加提示,成功提示。
public static Toast makeTextClock(Context context, CharSequence text, int duration) {
Toast toast = Toast.makeText(context, text, duration);
toast.getWindowParams().type =WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL;
toast.getWindowParams().privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
toast.getWindowParams().flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
return toast;
}