android锁屏机制探讨

最近在搜狗输入法实习,研究了一下android系统的锁屏问题,记录一下,相互学习!

android锁屏分系统自带的锁屏和第三方的锁屏。

1、系统自带的锁屏的修改需要改android源码,不同的手机厂商可以做好自己的锁屏样式然后烧到自己生产的手机中,

      如华为,小米...,都有自己风格的锁屏。

2、第三方锁屏的机制是:在手机开关屏幕时,系统会发出ACTION_SCREEN_ON和ACTION_SCREEN_OFF广播,

     通过截获这些广播,设置自己的锁屏view并且屏蔽掉home键和back键等,即可实现第三方锁屏。

     关于锁屏时类似QQ弹出消息的机制:  

        参考链接   http://www.eoeandroid.com/thread-540944-1-1.html    

                           http://stackoverflow.com/questions/21852203/android-how-to-completely-disable-keyguard

        首先弹出的activity只需重写上面的onAttacedToWindow方法即可; 

               FLAG_SHOW_WHEN_LOCKED和FLAG_DISMISS_KEYGUARD是关键,这两个替代了以前版本里的KeyguardLock类的功能。

               FLAG_DISMISS_KEYGUARD和FLAG_SHOW_WHEN_LOCKED的描述参见android官方文档          http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DISMISS_KEYGUARD


自己试验后得到的结论为:

FLAG_DISMISS_KEYGUARD可以解除系统不安全的锁屏,比如滑动解锁,安全的锁屏仍需解锁。系统自带的锁屏时没法突破的。

对于第三方的锁屏,比如锁屏精灵、GO锁屏什么的,由于其实现机制为得到广播然后显示view,所以是可以屏蔽掉的。

方法为:

自己写一个service用来截获屏幕关闭和点亮的广播,然后在onReceiver里丢弃掉(abortBroadcast())

这个广播(这个广播好像是顺序广播,可以被丢弃),

另外需要设置自己的这个截获广播的filter的优先级为最高,方法为filter.setPriority(1000);


以上即为类似QQ屏幕弹窗的实现,以及弹窗时锁频的处理。这只是自己的探索结果,可以参考,自己尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值