`
liguanyi11111
  • 浏览: 62500 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

Android 检测手机是否允许弹出悬浮窗

 
阅读更多

  如今手机大多数都是用各个厂商定制的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中使用,否则无法检测。

分享到:
评论
1 楼 麦田的设计者 2017-01-06  
在金山工作?

相关推荐

    android悬浮窗,android无需权限的悬浮窗

    android悬浮窗 android无需权限的悬浮窗例子 android悬浮窗权限 android拖动视图 安卓悬浮窗 安卓悬浮球 android悬浮球 大部分人实现的悬浮窗都需要授权悬浮窗权限,否则无法使用,但本人开发这个悬浮窗无需权限,...

    android伸缩式悬浮窗

    在Android开发中,创建一个可伸缩式悬浮窗是一项实用且有趣的任务,它能为用户提供更灵活的操作体验。本文将详细讲解如何利用`WindowManager`实现这样的功能,并探讨相关技术要点。 首先,我们要理解`WindowManager...

    安卓悬浮窗相关-不需要悬浮窗权限在桌面弹出悬浮窗.rar

    这个压缩包"安卓悬浮窗相关-不需要悬浮窗权限在桌面弹出悬浮窗.rar"可能包含了一些代码示例或库,旨在演示如何实现这一功能。由于压缩包中的文件数量未具体给出,我们无法一一列举所有文件,但可以探讨一下实现这种...

    Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果 源码程序

    悬浮窗功能可能因不同Android版本和设备的差异而有所不同,需要进行广泛的兼容性测试,确保在各种环境下正常工作。 通过以上步骤,你可以实现类似360手机卫士的悬浮窗效果。"360FloatWindowDemo"源码程序提供了...

    android 悬浮窗全屏显示,锁屏页面悬浮窗全屏显示

    1. **悬浮窗基础**:在Android中,悬浮窗通常通过`android.view.WindowManager`服务来创建,它允许应用在屏幕的任意位置添加、移动或删除视图。悬浮窗需要`SYSTEM_ALERT_WINDOW`权限,可以在应用的`AndroidManifest....

    android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手-IT计算机-毕业设计.zip

    这个毕业设计项目,"android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手",旨在帮助学生深入理解Android系统的运行机制,并通过模仿知名应用如360手机卫士和淘宝手机助手的悬浮窗功能来实践这一技术。...

    android后台服务悬浮窗动态截屏

    悬浮窗的实现主要依赖于`SYSTEM_ALERT_WINDOW`权限,这是Android系统级的权限,允许应用在所有其他应用之上显示内容。在AndroidManifest.xml中,需要添加以下权限: ```xml <uses-permission android:name="android....

    Android 悬浮窗 可点击

    在Android开发中,悬浮窗(Floating Window)通常被称为系统级通知或者系统挂载窗口,它是一种可以在用户界面上层浮动显示的小窗口,常用于实时显示信息或者提供快捷操作。本篇将详细介绍如何创建一个可点击的...

    Android实例源码-悬浮窗类安卓源代码(4例).zip

    在Android开发中,悬浮窗(Floating Window)是一种特殊类型的窗口,它可以显示在应用程序的顶层,甚至其他应用之上,用户可以在不关闭当前应用的情况下查看或操作悬浮窗内容。本压缩包包含四个具体的Android悬浮窗...

    Android 视频悬浮窗

    在Android开发中,实现视频悬浮窗是一项常见的需求,比如音乐播放器、在线视频应用等,可以让用户在使用其他应用的同时观看或听音乐。本资源提供了一个关于Android视频悬浮窗的实现示例,其中包含了可以直接运行的...

    android桌面悬浮窗

    在Android系统中,桌面悬浮窗是一种非常实用的功能,它可以在用户使用其他应用程序的同时显示重要的信息或者提供便捷的操作入口。本文将深入探讨如何实现一个具备自由拖动和智能隐藏功能的Android桌面悬浮窗。 首先...

    Android 悬浮窗的实现源码

    在Android系统中,实现悬浮窗(也称为小窗口或overlay)是通过利用系统的窗口管理机制来达到在其他应用之上显示自定义视图的目的。这里,我们主要关注的是如何使用一个Service、自定义View以及Activity来完成这个...

    Android-Andorid任意界面悬浮窗实现悬浮窗如此简单

    这个标题“Android-Android任意界面悬浮窗实现悬浮窗如此简单”暗示了我们将探讨如何轻松地创建这样的功能。描述进一步强调了实现的简便性,让我们相信即使对Android开发不太熟悉的人也能理解并实现。 首先,我们要...

    android实现悬浮窗功能,无需权限

    在Android开发中,实现一个无需额外权限的悬浮窗功能是一个常见的需求,特别是在打造辅助工具或者个性化应用时。本文将详细讲解如何在Android系统4.4(API Level 19)及以上版本实现这样的功能,主要涉及的技术点是...

    Android 悬浮窗权限各机型各系统适配大全(总结)

    悬浮窗适配有两种方法:第一种是按照正规的流程,如果系统没有赋予 APP 弹出悬浮窗的权限,就先跳转到权限授权界面,等用户打开该权限之后,再去弹出悬浮窗;第二种就是利用系统的漏洞,绕过权限的申请。正常适配...

    android 桌面悬浮窗点击穿透

    1、可执行demo2、service中添加悬浮窗,可增加,删除,悬浮窗。3、可点击悬浮窗事件,4、点击悬浮窗可将点击事件穿透到桌面5、只是demo,ui与逻辑不完美

    亲测可用 e4a 易安卓 BG悬浮窗类库 类库 易安卓悬浮窗类库 e4a悬浮窗

    易安卓(e4a)是一款基于Java语言的手机应用程序开发工具,它简化了Android应用的开发过程,使得非专业程序员也能快速上手。在提供的压缩包文件中,"BG悬浮窗类库类库.elb" 文件很显然是一个针对e4a的悬浮窗功能的...

    Android应用内悬浮窗的实现方案示例

    悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是Activity、Toast、Dialog,...

    Android高级应用源码-android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手.zip

    【标题】中的“Android高级应用源码-android桌面悬浮窗效果进阶 仿360手机卫士、淘宝手机助手.zip”表明这是一个关于Android高级开发的项目,主要关注的是实现类似360手机卫士和淘宝手机助手的桌面悬浮窗功能。...

Global site tag (gtag.js) - Google Analytics