如今手机大多数都是用各个厂商定制的ROM,大部分Rom都添加了是否允许弹出悬浮窗的权限(小米,魅族,乐视等等)。这里提供一个方法来让app自己检查自己是否允许弹出悬浮窗。代码为了独立舍弃了一些优化方法,大家可以自行根据情况修改。
/** * 检测当前是否可以显示悬浮窗(与是否有悬浮窗权限有一定区别 华为手机当有activity存在时,无论是否有权限都允许弹出悬浮窗。) * @param context * @param result {@link } * @return true 开始检测 false检测失败 */ public static boolean checkFloatWindowAllowShow(Context context,final ICheckResult result){ final WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); if(windowManager == null){ return false; } WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; params.width = 0; params.height = 0; final Handler handler = new Handler(); final View view = new View(context){ @Override public void onWindowFocusChanged(boolean hasWindowFocus) { handler.removeCallbacksAndMessages(null); if(getParent() != null) { windowManager.removeView(this); } //允许弹出悬浮窗 result.onResult(true); } }; windowManager.addView(view, params); handler.postDelayed(new Runnable() { @Override public void run() { windowManager.removeView(view); handler.removeCallbacksAndMessages(null); //禁止弹出悬浮窗 result.onResult(false); } }, 100); return true; } /** * 用于反馈检查结果 */ public interface ICheckResult{ void onResult(boolean isAllow); }
这个方法可以解决绝大部分手机ROM的检测问题(本地测试5款常见手机,都可以检测)。不过注意一点,华为手机因为他的悬浮窗权限比较特殊,当app由activity在前台时,无论是否拥有权限,华为均可弹出悬浮窗。所以要完美检测当前是否有权限,需要在前台没有activity时调用,例如在service中使用,否则无法检测。
相关推荐
android悬浮窗 android无需权限的悬浮窗例子 android悬浮窗权限 android拖动视图 安卓悬浮窗 安卓悬浮球 android悬浮球 大部分人实现的悬浮窗都需要授权悬浮窗权限,否则无法使用,但本人开发这个悬浮窗无需权限,...
在Android开发中,创建一个可伸缩式悬浮窗是一项实用且有趣的任务,它能为用户提供更灵活的操作体验。本文将详细讲解如何利用`WindowManager`实现这样的功能,并探讨相关技术要点。 首先,我们要理解`WindowManager...
这个压缩包"安卓悬浮窗相关-不需要悬浮窗权限在桌面弹出悬浮窗.rar"可能包含了一些代码示例或库,旨在演示如何实现这一功能。由于压缩包中的文件数量未具体给出,我们无法一一列举所有文件,但可以探讨一下实现这种...
悬浮窗功能可能因不同Android版本和设备的差异而有所不同,需要进行广泛的兼容性测试,确保在各种环境下正常工作。 通过以上步骤,你可以实现类似360手机卫士的悬浮窗效果。"360FloatWindowDemo"源码程序提供了...
1. **悬浮窗基础**:在Android中,悬浮窗通常通过`android.view.WindowManager`服务来创建,它允许应用在屏幕的任意位置添加、移动或删除视图。悬浮窗需要`SYSTEM_ALERT_WINDOW`权限,可以在应用的`AndroidManifest....
这个毕业设计项目,"android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手",旨在帮助学生深入理解Android系统的运行机制,并通过模仿知名应用如360手机卫士和淘宝手机助手的悬浮窗功能来实践这一技术。...
悬浮窗的实现主要依赖于`SYSTEM_ALERT_WINDOW`权限,这是Android系统级的权限,允许应用在所有其他应用之上显示内容。在AndroidManifest.xml中,需要添加以下权限: ```xml <uses-permission android:name="android....
在Android开发中,悬浮窗(Floating Window)通常被称为系统级通知或者系统挂载窗口,它是一种可以在用户界面上层浮动显示的小窗口,常用于实时显示信息或者提供快捷操作。本篇将详细介绍如何创建一个可点击的...
在Android开发中,悬浮窗(Floating Window)是一种特殊类型的窗口,它可以显示在应用程序的顶层,甚至其他应用之上,用户可以在不关闭当前应用的情况下查看或操作悬浮窗内容。本压缩包包含四个具体的Android悬浮窗...
在Android开发中,实现视频悬浮窗是一项常见的需求,比如音乐播放器、在线视频应用等,可以让用户在使用其他应用的同时观看或听音乐。本资源提供了一个关于Android视频悬浮窗的实现示例,其中包含了可以直接运行的...
在Android系统中,桌面悬浮窗是一种非常实用的功能,它可以在用户使用其他应用程序的同时显示重要的信息或者提供便捷的操作入口。本文将深入探讨如何实现一个具备自由拖动和智能隐藏功能的Android桌面悬浮窗。 首先...
在Android系统中,实现悬浮窗(也称为小窗口或overlay)是通过利用系统的窗口管理机制来达到在其他应用之上显示自定义视图的目的。这里,我们主要关注的是如何使用一个Service、自定义View以及Activity来完成这个...
这个标题“Android-Android任意界面悬浮窗实现悬浮窗如此简单”暗示了我们将探讨如何轻松地创建这样的功能。描述进一步强调了实现的简便性,让我们相信即使对Android开发不太熟悉的人也能理解并实现。 首先,我们要...
在Android开发中,实现一个无需额外权限的悬浮窗功能是一个常见的需求,特别是在打造辅助工具或者个性化应用时。本文将详细讲解如何在Android系统4.4(API Level 19)及以上版本实现这样的功能,主要涉及的技术点是...
悬浮窗适配有两种方法:第一种是按照正规的流程,如果系统没有赋予 APP 弹出悬浮窗的权限,就先跳转到权限授权界面,等用户打开该权限之后,再去弹出悬浮窗;第二种就是利用系统的漏洞,绕过权限的申请。正常适配...
1、可执行demo2、service中添加悬浮窗,可增加,删除,悬浮窗。3、可点击悬浮窗事件,4、点击悬浮窗可将点击事件穿透到桌面5、只是demo,ui与逻辑不完美
易安卓(e4a)是一款基于Java语言的手机应用程序开发工具,它简化了Android应用的开发过程,使得非专业程序员也能快速上手。在提供的压缩包文件中,"BG悬浮窗类库类库.elb" 文件很显然是一个针对e4a的悬浮窗功能的...
悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是Activity、Toast、Dialog,...
【标题】中的“Android高级应用源码-android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手.zip”表明这是一个关于Android高级开发的项目,主要关注的是实现类似360手机卫士和淘宝手机助手的桌面悬浮窗功能。...