浅谈Service中实现弹出对话框的坑
一、手机版本问题,大多数文章没有涉及这个点,导致他们的代码并无法正常使用
M版本以上需要使用的Type–>TYPE_APPLICATION_OVERLAY
AlertDialog.Builderbuilder=newAlertDialog.Builder(getApplicationContext());
builder.setTitle(“提示”);
builder.setMessage(“service弹框”);
builder.setNegativeButton(“明白了”,null);
Dialogdialog=builder.create();
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){//6.0
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else{
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
dialog.show();
同时,因为涉及不同版本的Android系统
AndroidManifest.xml中声明同时需要这两个类型对应的权限
uses-permissionandroid:name=”android.permission.SYSTEM_ALERT_WINDOW”/
uses-permissionandroid:name=”android.permission.SYSTEM_OVERLAY_WINDOW”/android
二、权限问题,service中弹出的对话框为系统弹框,在M版本以上需要申请悬浮窗权限
Android6.0以前悬浮窗是默认允许的
注意Android6.0以后的使用
因为悬浮窗权限SYSTEM_ALERT_WINDOW属于特殊权限,需要自己特别单独申请
特殊权限,顾名思义,就是一些特别敏感的权限,在Android系统中,主要由两个
SYSTEM_ALERT_WINDOW(设置悬浮窗,进行一些黑科技)
WRITE_SETTINGS(修改系统设置)
关于上面两个特殊权限的授权,做法是使用startActivityForResult启动授权界面来完成。
申请方式:
privatestaticfinalintREQUEST_CODE=1;
privatevoidrequestAlertWindowPermission(){
Intentintent=newIntent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse(“package:”+getPackageName()));
startActivityForResult(intent,REQUEST_CODE);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==REQUEST_CODE){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
if(Settings.canDrawOverlays(this)){
Log.i(“xqxinfo”,”onActivityResultgranted”);
}
}
}
}
浅谈Service中实现弹出对话框的坑相关推荐
- Web开发中的弹出对话框控件介绍
Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了.不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由 ...
- vue中新增弹出对话框操作
情景: 点击新增用户或者新增订单,弹出对话框页面进行信息输入操作 分析: 这个对话框组件是直接放到用户组件代码中的,自带一个属性,控制是否显示,默认为false不显示,需要显示的时候拿到此属性对应的变 ...
- C++中各种弹出对话框
#include<windows.h> #include<cstdio> int main(){int x;x=MessageBox(GetForegroundWindow() ...
- asp.net 2.0中的弹出对话框
在asp.net 1.1中,要做1个弹出的对话框的话,一般是在服务端的代码中这样写: btnClick.Attributes.Add("onclick", "return ...
- javascript--弹出对话框 四种对话框 获得用户输入值 .
让用户点击确定 取消.让用户输入值.打开指定窗口 alert("message") confirm("message") prompt("messag ...
- javascript 弹出对话框
首先我想先说两句我对javascript的一些看法,我希望大家认真的去学习这门编程语言,因为它给我们在开发网页时,会带来很多的惊喜!javascript一般是运行在客户端的(client),主要用于开 ...
- java前端 js弹出框_js 弹出对话框3种方式
js 弹出对话框3种方式 (2012-12-03 16:10:47) 标签: it javascript js 弹出对话框3种方式对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认 ...
- HTML中弹窗中加入图片,javascript里怎么实现点击图片弹出对话框?
JavaScript中可以使用document.getElementsByTagName方法后去img标签,然后遍历所有img标签并为其添加点击事件实现点击弹出对话框. JavaScript实现点击图 ...
- python中pygame增加对话框_在pygame中制作弹出窗口与pgu
我在用pygame编写的游戏中添加了一些gui元素(带有按钮的对话框).我环顾四周寻找一个体面的GUI工具包,并以pgu结束.无论如何,我试图让它弹出一个对话框,它确实(有点),但它不关闭.在pyga ...
最新文章
- 我的家乡网页设计_Graphic Design|康石石浅谈LOGO设计在作品集中的创作方法
- 坚持教学与科研相结合
- python语法基础知识-python_基础知识_安装和基础语法
- SQL SERVER 导入EXCEL的存储过程
- VUE.js项目中控制台报错: Uncaught (in promise) NavigationDuplicated解决方法
- BZOJ4327:[JSOI2012]玄武密码(SAM)
- 《构建之法》--阅读(第13章-第17章)
- java web 集成dom4j_[JavaWeb基础] 031.dom4j写入xml的方法
- hive窗口函数_Hive sql窗口函数源码分析
- Unit Tests Tool - What is “Mock You” The introduction to moq #Reprinted#
- 学习日记12、list集合中根据某个字段进行去重复操作
- 看黑马程序员视频学习之节点操作之复制节点
- UCINET软件使用简介——主菜单简介2
- 秒杀项目(2)集成redis
- Python以TCp搭建小游戏服务器
- 音频知识之OGG格式分析
- 一份成功的高薪软件测试求职简历应该是这样的
- 【医疗图像分割】Deep neural networks for the detection and segmentation of the retinal fluid in OCT images.
- html 跑步比赛小游戏,小班游戏教案:跑步比赛
- python 千位分隔符_千位分隔符的完整攻略
热门文章
- Stylized NeRF 水记(NeRF的风格化)
- 创业教父YC创始人Paul Graham就很烦鼓动年轻创业的
- 51单片机LED流水灯、走马灯的实现
- Linux 触摸屏 笔记本,Linux 5.2应该可以解决许多AMD Ryzen笔记本电脑触摸屏/触摸板无法工作的问题...
- 强烈推荐33个 GitHub 前端学习资源
- 用 typescript 做一个贪吃蛇小游戏
- 犹他州计算机科学,美国犹他州立大学计算机系终身教授承恒达博士访问学科部...
- 支付宝提现免手续费的方法步骤
- 整数二分详解---yxc
- mermaid制作饼图