记录错误16.8.12 android receiver dialog
来源:互联网 发布:鞋子淘宝试用报告范文 编辑:程序博客网 时间:2024/05/01 03:19
现在遇到一个需求,在网络从wifi切换到别的网络的时候弹出一个对话框,然后静态的注册了一个广播,但是弹出遇到问题,原来做过账号的强制退出,使用的是这个
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
要在show之前 create之后添加,将其设置成一个系统的dialog,
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
这个权限也要加上,
原因:
但是静态注册里,如果没声明android:process,那么这个BroadcastReceiver和Activity是在同一个进程的,显然BroadcastReceiver的生命周期和当前的Application不是绑定的,那么这个BroadcastReceiver运行的空间就应该在某个系统服务而不是当前进程中。结合“设置了TYPE_SYSTEM_ALERT属性”是典型的在service中构造Alertdialog的方法这一点,很显然此时onReceive()里传入的context实际上是这个BroadcastReceiver所在的系统服务。
然而,我的手机还是没能弹出来,,比较无语,最后上网上看了下发现是google 在 6.0加入了运行时权限的概念,需要在java代码中进行动态申请。
一个比较好的资料:https://github.com/CankingApp/PermissionDemo
然后解决方法:
一丶google为了防止旧的应用程序崩溃只对targetSDK为23及以上的程序使用新的权限机制,所以targetSDK设为23以下就可以规避问题了 但是感觉不好
二丶在设置里面给了这个调试应用【允许悬浮窗】 但是得手动的打开,而且,我使用的是 米UI,就是打开了也没什么用
然后问题没有解决,我就想使用dialog样式的activity来做,但是还是弹不出来(弹的时候要加上 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
这个标记,不然会报错。但是,还是没用,6.0以上弹不出来,我测试的4.2的系统就可以。
最后,我上去找了几个应用,看了下他们的网络监控,,爱奇艺我下载直接弹了个Toast , 优酷 没有显示,我wifi切换到4g,什么都没提示,继续下载。。
so,和老大商量了下,也弹了个Toast提醒。。。
- 记录错误16.8.12 android receiver dialog
- Android Dialog 记录
- Android 错误之broadcast receiver not register
- Receiver里面启动dialog引发的一系列错误解决(SYSTEM_ALERT_WINDOW)
- android学习记录1:android自定义Dialog
- [Debug记录]Android dialog setcancelable 无效解决方案
- Android错误记录
- Android错误解决记录
- android错误记录
- 【Android studio】错误记录
- Android Studio 错误记录
- android开发错误记录
- Android错误记录
- android NoSuchMethodError 错误记录
- Android 低级错误记录
- 关于android receiver
- android 之broadcast receiver
- Android短信Receiver优先级
- 设置CURL头信息
- Android 使用Notification创建推送通知
- 最长公共子序列知识点
- hdoj5024【BFS/暴力】
- bnu10791DOTA选人
- 记录错误16.8.12 android receiver dialog
- [ Android Studio ]关于编译报错 缓存 问题
- 原始数据的分析
- 运维自动化需要的讨论
- 解决微信浏览器无法使用reload()刷新页面
- IOS之UITableView优化-可重用机制
- 如何直接为价廉的ESP8266 WiFi模块编写程序
- javascript 数组
- android Broadcast