美文网首页Android开发Android开发经验谈Android技术知识
应用内悬浮窗,无需一切权限,适配所有ROM和厂商

应用内悬浮窗,无需一切权限,适配所有ROM和厂商

作者: 李良逸 | 来源:发表于2018-11-03 21:25 被阅读15次

悬浮窗实现传统方案

对于传统悬浮窗和一些古老的“黑科技”悬浮窗的实现,想必已经有很多成熟的案例了,实现策略基本为以下两种:

  1. TYPE_SYSTEM_ALERT类型
mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams()
layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;

​ 需要权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" ></uses>
  1. TYPE_TOAST / TYPE_PHONE 类型

​ 7.1.1以下不需要权限声明,在魅族、华为、小米等机型上默认隐藏,需要引导用户打开悬浮窗。

传统方案的问题

第一种方案因为存在各种限制,不能被众多开发采纳,故而比较流行的悬浮窗实现方式是第二种。

但是,我们有自己的原则:

  • 不能接受7.1.1以上机型,使用第二种方式实现悬浮窗仍需要用户主动授予权限的操作?
  • 不能接受在魅族、华为、小米等机型上默认隐藏,需要引导用户打开悬浮窗,就像这样

[站外图片上传中...(image-18b632-1541251502358)]

功能

  • 应用内显示,无需申请任何权限
  • 应用内显示,所有机型都可以默认显示悬浮窗,无需引导用户做更多设置
  • 支持拖拽
  • 超出屏幕限制移动
  • 可自动吸附到屏幕边缘

使用规则

  1. 在基类Activity(注意必须是基类Activity)中的onStart和onStop添加如下代码

        @Override
        protected void onStart() {
            super.onStart();
            FloatingViewManager.getInstance().attach(this);
        }
    
        @Override
        protected void onStop() {
            super.onStop();
            FloatingViewManager.getInstance().detach(this);
        }
    
  1. 展示悬浮窗

        FloatingViewManager.getInstance().add(getApplicationContext());
    
  2. 销毁悬浮窗

        FloatingViewManager.getInstance().remove();
    

附上Github链接:
https://github.com/leotyndale/EnFloatingView

效果图

预览图

相关文章

  • Android 悬浮窗--无需权限

    无需一切权限,不受各种国产ROM限制,默认可以显示的应用内悬浮窗。 应用内显示,无需申请任何权限 应用内显示,所有...

  • 应用内悬浮窗,无需一切权限,适配所有ROM和厂商

    悬浮窗实现传统方案 对于传统悬浮窗和一些古老的“黑科技”悬浮窗的实现,想必已经有很多成熟的案例了,实现策略基本为以...

  • Android权限适配(二)

    本文接 Android权限适配(一) 悬浮窗权限 悬浮窗权限同样属于上文中说到的特殊权限。 悬浮窗代码的设置 要使...

  • Android悬浮窗权限适配

    转载请注明出处:Android悬浮窗权限适配 悬浮窗相信大家都不陌生,比如360手机卫士的加速球,视频应用的小窗,...

  • Android 悬浮窗权限各机型各系统适配大全

    这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面...

  • 悬浮窗上线

    [ 参考点: 悬浮窗(权限启动申请) || 悬浮窗( 权限使用时申请 )] -------------------...

  • Android Permission权限申请轻量级封装

    MyPermission Android轻量级权限申请。引用简单方便 运行时权限、未知应用安装权限、悬浮窗权限、显...

  • android 悬浮窗

    安卓悬浮窗的书写,我们分为几个步骤: 1.添加悬浮窗权限 2.书写悬浮窗代码,搭建悬浮窗布局 3.判断悬浮窗权限是...

  • 使用教程

    小米&华为&魅族打开悬浮窗权限 OPPO&VIVO打开悬浮权限 其他手机打开悬浮权限

  • 无需权限的悬浮球,快收到你碗里去吧!

    闲来无事,搞一波悬浮球,此球: 无需权限 无需权限 无需权限 主要代码只有一个类,简简单单放进自己的工程 悬浮球可...

网友评论

    本文标题:应用内悬浮窗,无需一切权限,适配所有ROM和厂商

    本文链接:https://www.haomeiwen.com/subject/wfjlxqtx.html