SEO优化 > 追踪热点 / Android?开发之锁屏弹窗
(点击上方公众号,可快速关注)
来源:单刀土豆
链接:http://www.jianshu.com/p/1e4131a30bad
尝试利用 WindowManager 添加浮窗的方式实现
想在锁屏...
(点击上方公众号,可快速关注)
来源:单刀土豆
链接:http://www.jianshu.com/p/1e4131a30bad
尝试利用 WindowManager 添加浮窗的方式实现
想在锁屏上面实现弹窗,第一个想法就是利用 WindowManager 设置 Window 的 Flag,通过设置 Flag 的显示优先级来让窗口显示在锁屏的上面。接下来就是试验可能相关的 Window Type 属性,验证该方案是否可行。
在尝试各个 Window Type 属性之前需要明确各个 Type 所需要的权限,下面是 com.android.internal.policy.impl.PhoneWindowManager.checkAddPermission 的源码:
publicintcheckAddPermission(WindowManager.LayoutParams attrs){
inttype= attrs.type;
if(type< WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
|| type> WindowManager.LayoutParams.LAST_SYSTEM_WINDOW){
returnWindowManagerImpl.ADD_OKAY;
}
Stringpermission= null;
switch(type){
caseTYPE_TOAST:
// XXX right now the app process has complete control over
// this... should introduce a token to let the system
// monitor/control what they are doing.
break;
caseTYPE_INPUT_METHOD:
caseTYPE_WALLPAPER:
// The window manager will check these.
break;
caseTYPE_PHONE:
caseTYPE_PRIORITY_PHONE:
caseTYPE_SYSTEM_ALERT:
caseTYPE_SYSTEM_ERROR:
caseTYPE_SYSTEM_OVERLAY:
permission= android.Manifest.permission.SYSTEM_ALERT_WINDOW;
break;
default:
permission= android.Manifest.permission.INTERNAL_SYSTEM_WINDOW;
}
if(permission!= null){
if(mContext.checkCallingOrSelfPermission(permission)
!= PackageManager.PERMISSION_GRANTED){
returnWindowManagerImpl.ADD_PERMISSION_DENIED;
}
}
returnWindowManagerImpl.ADD_OKAY;
}
明显不适合的 Type:TYPE_TOAST, TYPE_INPUT_METHOD, TYPE_WALLPAPER; 可能适合的 Type:TYPE_PHONE, TYPE_PRIORITY_PHONE, TYPE_SYSTEM_ALERT, TYPE_SYSTEM_ERROR, TYPE_SYSTEM_OVERLAY; 其它类型的 Type:需要系统签名权限:
android.Manifest.permission.INTERNAL_SYSTEM_WINDOW
而申请该权限需要系统签名,所以我们是无法获取权限的。
TYPE_PHONE
/**
* Window type: phone. These are non-application windows providing
* user interaction with the phone (in particular incoming calls).
* These windows are normally placed above all applications, but behind
* the status bar.
* In multiuser systems shows on all users' windows.
*/
publicstaticfinalintTYPE_PHONE= FIRST_SYSTEM_WINDOW+2;
TYPE_PHONE 类型的窗口可以显示在其它 APP 的上面,但不能显示在锁屏的上面,所以 PASS。
TYPE_PRIORITY_PHONE
/**
* Window type: priority phone UI, which needs to be displayed even if
* the keyguard is active. These windows must not take input
* focus, or they will interfere with the keyguard.
* In multiuser systems shows on all users' windows.
*/
publicstaticfinalintTYPE_PRIORITY_PHONE= FIRST_SYSTEM_WINDOW+7;
TYPE_PRIORITY_PHONE 类型的窗口可以显示在其它 APP 的上面,但不能显示在锁屏的上面,所以 PASS。而且实际的行为和注释并不相符,该类型的窗口是可以获取交互事件的,具体原因待查。
TYPE_SYSTEM_ALERT
/**
* Window type: system window, such as low power alert. These windows
* are always on top of application windows.
* In multiuser systems shows only on the owning user's window.
*/
publicstaticfinalintTYPE_SYSTEM_ALERT= FIRST_SYSTEM_WINDOW+3;
TYPE_SYSTEM_ALERT 类型的窗口可以显示在其它 APP 的上面,但不能显示在锁屏的上面,所以 PASS。
TYPE_SYSTEM_OVERLAY
/**
* Window type: system overlay windows, which need to be displayed
* on top of everything else. These windows must not take input
* focus, or they will interfere with the keyguard.
* In multiuser systems shows only on the owning user's window.
*/
publicstaticfinalintTYPE_SYSTEM_OVERLAY= FIRST_SYSTEM_WINDOW+6;
TYPE_SYSTEM_OVERLAY 类型的窗口可以显示在所有其它窗口的上面,包括锁屏,而且不会影响它下面窗口的交互事件响应,但是该属性窗口不能获得焦点,无法进行交互(如果该窗口可以获取焦点,那么就可以用来抓取用户的锁屏密码,出于安全考虑,系统是不会允许的),所以只能用来简单的展示内容,如果需要交互的锁屏弹窗,那么该属性 PASS。
TYPE_SYSTEM_ERROR
/**
* Window type: internal system error windows, appear on top of
* everything they can.
* In multiuser systems shows only on the owning user's window.
*/
publicstaticfinalintTYPE_SYSTEM_ERROR= FIRST_SYSTEM_WINDOW+10;
在原生 ROM 5.1 下试验是可以显示出来的,但根据注释来看(appear on top of everything they can)不是在所有情况下都可以显示在锁屏上面的,而且像 MIUI 和 Flyme 等 ROM 默认是屏蔽浮窗权限的,考虑到这点,利用 WindowManager 添加浮窗的方式实现锁屏弹窗的方案基本 PASS。
使用 Activity 的方式实现
首先需要对 Activity 进行如下设置
protectedvoidonCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
finalWindow win= getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
其中最主要也是必须要设置的就是:FLAG_SHOW_WHEN_LOCKED,顾名思义就是锁屏下显示该 Activity。而其它几个 Flag 包括:解锁、保持屏幕常亮、点亮屏幕可以根据具体的需求选择设置。
在 AndroidManifest.xml 中声明 Activity
同样该 Activity 也需要在 AndroidManifest.xml 中声明,声明时需注意添加 android:excludeFromRecents="true" 属性,是为了将该 Activity 从最近任务列表中去除,否则用户会觉得很奇怪。还有因为这个 Activity 会整个盖在锁屏上面,而且就算设置成背景透明,锁屏界面也不会显示在下面(系统主要是出于安全考虑),所以需要考虑下该 Activity 的背景,这里为了显示不要太突兀将主题设为壁纸。
<activity android:name=".LockScreenActivity"
android:launchMode="singleInstance"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>
启动 Activity
由于该 Activity 是为了在锁屏的情况下显示的,所以启动 Activity 时不要忘了判断手机是否处于锁屏状态,可以通过下面这种方式判断锁屏状态:
KeyguardManager km= (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
if(km.inKeyguardRestrictedInputMode()){
// 处于锁屏状态
}
------------推荐 ------------
范品社推出的极客T恤,含程序员、电影、美剧和物理题材,面料舒适、100%纯棉,有黑、白、灰、藏青色,单件 ¥59.9、两件减¥12、四件减¥28、六件减¥42,详见网店商品页介绍。
(上面为部分 T 恤款式)
网店地址:https://fanpinshe.taobao.com
淘口令:复制以下红色内容,然后打开手淘即可购买
范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)
猜你喜欢
- 2016-11-13 日产显示屏尴尬:夏普被收购,JDI岌岌可危
- 2016-11-11 Magic Leap神秘显示技术曝光:不是自家专利,或为微型OLED
- 2016-11-11 想知道网站logo如何在三天内搜索引擎上显示吗?
- 2016-10-29 传闻告吹:外媒确认苹果已退出独立显示屏业务
- 2016-09-21 seo篇章:nofollow属性以及运用nofollow标签集中权重
- 2016-09-01 从魔兽十年谈谈PC显示器的变迁
- 2016-08-31 【移动搜索】如何让百度准确地识别页面类型
- 2016-08-31 牛逼!让你的网站无需点击自动弹出QQ聊天窗口!
- 2016-08-31 手机百度搜索到自己网站时,下方显示电话和地址
- 2016-08-31 百度统计实时访客显示数据延迟的原因
- 搜索
-
- 12-01第七届中国SEO排行榜大会深圳站精彩落幕
- 11-19站长分享自己网站访客统计数据
- 11-18感觉SEO越来越难做了,SEO这个职业还有前景么?
- 11-17百度将对熊掌号进行流量倾斜,还没开通的抓紧啦!
- 11-15想知道SEO真相是什么?大咖告诉你
- 11-09聊聊网站被运营商劫持
- 11-09站长工具chinaz下的关键词消失解决办法!
- 11-08稳定排名的方式是不是只有更新文章?
- 10-24从2013年至今百度公布的算法统计
- 10-19十九大报告给出了你最关心的十个问题的答案(图文)
- 10-12四大保险央企总裁人选配齐,原工行副行长任中国信保总裁
- 01-09还要再谈网红马佳佳吗?
- 01-09惠多网:大部分人的新名词,少部分人忘却的记忆
- 01-08什么会是移动互联网寻址标准?
- 11-19不止是台灯,它还是一款手机投影仪
- 11-19“宫斗剧”结束:超级高铁公司Hyperloop与创始人达成和解
- 11-192016世界互联网大会:企业家代表集体采访侧记
- 11-19新闻聚合BuzzFeed在G轮融资再获2亿美元,估值15亿美元
- 11-19揭秘微信荐股骗局:收上万会费再无神通
- 11-19微博1.2亿美元投资一直播母公司一下科技
- 11-19大跃进之后,乐视贾跃亭到底还差多少钱?
- 11-19白金汉宫将耗3.69亿英镑修缮:更换电线就达160公里长
- 11-19阿里巴巴、京东等反炒信企业联合发布第一期黑名单
- 11-19马云:没有数据,做互联网金融是胡说八道
- 11-19福建将推闽南话水平等级测试:以纯正度评判、录音方式考核
- 11-19印度时尚电商Koovs融资1600万美元,定位年轻群体
- 11-19中国电信骨干线路出现故障:南北互联和海外访客受影响
- 11-19马云、王健林同台,一个谈“斗地主”,一个谈空气治理
- 11-19微信小程序,暗藏着张小龙怎样的情景规划
- 11-19UNICAF获1200万美元融资,“新型学校”如何在非洲做学历教育
- 1382℃网络疯传魅族网页代码 PRO6或卖2799
- 1372℃不留短板 PRO 6的背后的魅族发展路径
- 1357℃《财富》500强看中国经济:科技还比不上房地产
- 1282℃揭秘微信荐股骗局:收上万会费再无神通
- 1197℃美国发布最新高校排行榜:哈佛再次屈居第二 - 哈佛,耶鲁,普林斯顿大学
- 1179℃含色情低俗内容:北京网信办责令映客/花椒/一直播等直播网站整改 - 网络直播,网络主播
- 1157℃iOS?10?及?macOS?Sierra?公测版今天正式推出,来做个尝鲜的勇士吧?|?极客早知道
- 1157℃詹妮弗劳伦斯的女星iCloud裸照泄露案宣判:黑客获刑18个月
- 1144℃云之重器、天河神武;云之无界、银盾起航
- 1129℃腾讯新闻客户端:从形式和内容探索媒体使命
- 1129℃程序员编程圣经:处处是笑话,句句皆真相 - 编程,程序员
- 1127℃机器人的高级阶段:不受人工控制的自我复制
- 1127℃席卷中端存储市场,深度解密Unity!
- 1127℃一月三手机 传4月21日魅族将发布魅蓝3
- 1125℃索尼PSV系统升级:破解漏洞被火速封杀
- 1125℃锤子M1发布会最受益是它:讯飞输入法宣布用户数达4亿
- 1122℃探营联邦快递:全球最大快递,共有643架飞机 - 联邦快递,快递 - SEO篇章
- 1122℃iPhone新OLED屏供应量难解决:或有特定版本
- 1120℃引领科技变革风向 TCL新品惊艳中国电子信息博览会
- 1119℃乐视手机发“原力金”新颜色 生态化反花样玩机
- 1119℃SpaceX宣布将于2018年测试飞往火星:星际移民还远吗?
- 1118℃十核处理器+双摄像头,红米Pro全身都是亮点
- 1117℃这个号称有一千八百亿亿个星球的游戏,终于要上线了
- 1117℃业务重组陷“阵痛” 英特尔净利锐减51%
- 1117℃一季度全球平板电脑出货量同比减少14.7%:苹果三星份额下滑
- 1117℃我们从天气开始聊,最后聊到了很久无人提及的幸福
- 1115℃18岁小伙连打四天网游,用眼过度成“独眼龙” - 网游,网吧
- 1113℃脑瘫患儿的诺亚方舟 360良医开通脑瘫诊疗咨询直通车
- 1109℃四人捕猎珍稀鸟类微博炫照被抓捕 - 珍稀动物 - SEO篇章
- 1104℃没有最美只有更美 拉格S以颜值和体验获用户喜爱
- 10-24从2013年至今百度公布的算法统计
- 10-19十九大报告给出了你最关心的十个问题的答案(图文)
- 10-12四大保险央企总裁人选配齐,原工行副行长任中国信保总裁
- 11-19“宫斗剧”结束:超级高铁公司Hyperloop与创始人达成和解
- 11-19不止是台灯,它还是一款手机投影仪
- 11-192016世界互联网大会:企业家代表集体采访侧记
- 11-19新闻聚合BuzzFeed在G轮融资再获2亿美元,估值15亿美元
- 11-19揭秘微信荐股骗局:收上万会费再无神通
- 11-19微博1.2亿美元投资一直播母公司一下科技
- 11-19大跃进之后,乐视贾跃亭到底还差多少钱?
- 11-19白金汉宫将耗3.69亿英镑修缮:更换电线就达160公里长
- 11-19马云:没有数据,做互联网金融是胡说八道
- 11-19阿里巴巴、京东等反炒信企业联合发布第一期黑名单
- 11-19福建将推闽南话水平等级测试:以纯正度评判、录音方式考核
- 11-19印度时尚电商Koovs融资1600万美元,定位年轻群体
- 11-19Airbnb虽然官司缠身,但仍有心情承包你整个旅程
- 11-19一张图读懂“乌镇时间”大咖热议啥
- 11-19成贵铁路创纪录:世界最长中承式空腹钢混结合提篮拱桥合拢
- 11-193年48亿元:苏宁确认拿下英超3年独家转播权
- 11-19从激烈竞争到纷纷倒掉:网盘服务缘何迅速没落?
- 11-19涉嫌向朴槿惠闺蜜行贿:三星战略规划部主管遭调查
- 11-19共享单车入局者这么多,会不会是泡沫
- 11-19神奇球体Sphere5.2,领略沉浸式视频魅力
- 11-19冯小刚开炮王健林背后:万达和整个电影圈暗战
- 11-19“谢杏芳原谅林丹”为什么要在腾讯微博上首发?
- 11-17刘强东布局京东未来12年:用技术开启商业智能化
- 11-17快递业扎堆上市:阿里持股百世物流准备赴美IPO
- 11-17国产页游登录日本:上线一天就停运
- 11-17为解决发展中国家卫生问题,盖茨携一公司研发“大便香水”
- 11-17我们的手机还需要TF卡吗?
- 标签列表