技术标签: Android Studio android8.0 悬浮窗权限 android6.0
1.在AndroidManifest.xml中申请权限
<!-- 要获取CompatModeWrapper,首先得在应用程序的AndroidManifest.xml文件中添加权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2.判断悬浮窗权限是否开启
public static boolean checkFloatPermission(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
return true;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
try {
Class cls = Class.forName("android.content.Context");
Field declaredField = cls.getDeclaredField("APP_OPS_SERVICE");
declaredField.setAccessible(true);
Object obj = declaredField.get(cls);
if (!(obj instanceof String)) {
return false;
}
String str2 = (String) obj;
obj = cls.getMethod("getSystemService", String.class).invoke(context, str2);
cls = Class.forName("android.app.AppOpsManager");
Field declaredField2 = cls.getDeclaredField("MODE_ALLOWED");
declaredField2.setAccessible(true);
Method checkOp = cls.getMethod("checkOp", Integer.TYPE, Integer.TYPE, String.class);
int result = (Integer) checkOp.invoke(obj, 24, Binder.getCallingUid(), context.getPackageName());
return result == declaredField2.getInt(cls);
} catch (Exception e) {
return false;
}
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
AppOpsManager appOpsMgr = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
if (appOpsMgr == null)
return false;
int mode = appOpsMgr.checkOpNoThrow("android:system_alert_window", android.os.Process.myUid(), context
.getPackageName());
return mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;
} else {
return Settings.canDrawOverlays(context);
}
}
}
3.使用
String androidSDK = Build.VERSION.SDK;
if(Integer.parseInt(androidSDK)>=23&&!Settings.canDrawOverlays(LoginActivity.this)){
Intent intent2 = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivityForResult(intent2,1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1){
if (PermissionUtils.checkFloatPermission(this)){
System.out.println("悬浮窗权限申请成功...");
}else{
System.out.println("悬浮窗权限申请失败...");
finish();
}
}
}
4.同一功能的两种显示效果
第一种:会进入到悬浮窗权限应用列表
使用以下代码,会进入到悬浮窗权限的列表,列表中是手机中需要悬浮窗权限的应用列表,你需要在此列表中找到自己的应用,然后点进去,才可以打开悬浮窗权限
Intent intent2 = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(intent2);
第二种:直接进入到自己应用的悬浮窗权限开启界面
使用以下代码,则不会到上述所说的应用列表,而是直接进入到自己应用的悬浮窗权限开启界面
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
Build.VERSION.SDK_INT>= Build.VERSION_CODES.O//8.0以上,建议用第一种
Build.VERSION.SDK_INT>= Build.VERSION_CODES.M//6.0-8.0,建议用第二种
参考网址:https://blog.csdn.net/eyishion/article/details/82787310
参考网址:https://blog.csdn.net/lovedou0816/article/details/79253710
Java基础面试题
文章浏览阅读464次,点赞6次,收藏5次。Linux远程连接工具Finalshell下载、安装和使用FinalShell 是一款由国人开发的 SSH 客户端工具,支持多平台,包括 Windows、Mac OS X 和 Linux。它主要用于一体化服务器管理,提供以下特性:Shell 和 SFTP 同屏显示:您可以同时查看 Shell 终端和 SFTP 文件传输界面,方便管理服务器。命令自动提示:FinalShell 提供命令自动补全功能,让您的命令输入更加简单、便捷。加速功能:软件内置加速功能,提高访问服务器的速度。_liunx 链接工具
文章浏览阅读2.5w次,点赞14次,收藏109次。(精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标,计算原理,依次列出。_真阳性率
Java垃圾回收机制
通过查看公司资质证书、考察公司规模和团队实力、查看历史案例和客户评价、询问测试流程和方法、考虑保密性和安全性以及比较多个公司的报价和服务,您可以做出明智的选择,为软件项目的成功奠定坚实的基础。一个有资质的软件测试公司通常会拥有相关的行业认证,如CMA/CNAS等,这些认证证明了公司在质量管理、项目管理等方面的实力和能力。了解公司的测试团队,包括团队成员的背景、经验和技术水平。了解公司的规模,包括员工数量、办公环境等,这有助于判断公司的实力和稳定性。比较多个公司的报价和服务,选择性价比高的公司。
文章浏览阅读3.5w次。对于大部分的用户来说,在多媒体音箱的使用上都不会有特别的讲究,很多用户由于对产品结构的陌生以及相关知识的缺乏,往往在音箱出现小故障之后也是凑合着用,实在不行再重新换过,事实上多媒体音箱的不少故障修理都非常简单,一般的用户都可以轻松搞定。一、调整音量时出现噼里啪啦的声音,音量时大时小。这是在多媒体音箱身上出现次数最多的故障,相信很多用户都有这样的体会,在使用一段时间后,调节音箱的音量往往会出现这个情..._音箱一通电就嗡嗡响怎么办
文章浏览阅读334次。目录结构a.js对外导出对象let name = 'j'let age = 18let sex = 'm'// 导出对象export { name, age}// 默认导出export default sexb.js// 导入a.js中导出对象import {name, age} from './a.js'// 导入a.js中默认导出import sex from './a.js'console.log(name, age, sex)index_如何用es6模块化项目
文章浏览阅读809次。教育行业中大数据分析的主要目的包括改善学生成绩、服务教务设计、优化学生服务等。而学生成绩中有一系列重要的信息往往被我们常规研究所忽视。通过大数据分析和可视化展示,挖掘重要信息,改善 学生服务,对于教学改进意义重大。美国教育部门构建“学习分析系统”,旨在向教育工作者提供了解学生到底是在怎样学习的更好、更好、更精确信息。利用大数据的分析学习能够向教育工作者提供有用的信息,从而帮助其回答众多不易回答的现实问题。_对高中教学系统进行可视化分析,
文章浏览阅读362次。【BZOJ】4726 [POI2017] Sabota?Description某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是谁)。_某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是
文章浏览阅读1.9k次。ethtool命令设置接收端哈希功能,按照哈希结果将数据流分发到网卡的不同接收队列中。例如以下命令,指定ipv4的tcp数据流中参与哈希的字段(sdfn):/ # ethtool --config-ntuple eth0 rx-flow-hash tcp4 sdfn同样,使用ethtool命令查看设置结果如下:/ # ethtool --show-ntuple eth0 rx-flow-hash..._网卡hash算法设置
文章浏览阅读4.8k次。在WIN 10下之前装的PADS VX2.3,_pads win10适合安装哪个版本pads
文章浏览阅读7.4k次。最近在实现文件上传的时候,经常需要同一个文件夹上传多个相同路径的情况,就觉着这样很耗时间,特别是网速慢的时候,一个一个去上传,那是非常的慢,于是网上搜寻了一下一次性解压多个文件夹的命令之类的。都不太如意,于是就自己写了一个sh脚本。#!/bin/bash#本sh主要用于unzip解压多个文件夹的命令#事先获取需要解压的文件路径个数echo "正在检索文件夹:$#"#获取压缩的zip文件_win7 unzip 多个文件