悬浮窗相信都会用到,配合背景透明以及webview-js注入可以做很多事情。

1、判断权限

 public static boolean checkFloatPermission(Context context) {if (!hasPermission(context, "android.permission.SYSTEM_ALERT_WINDOW")) {return false;}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 Settings.canDrawOverlays(context) || mode == AppOpsManager.MODE_ALLOWED || mode == AppOpsManager.MODE_IGNORED;} else {return Settings.canDrawOverlays(context);}}}public static boolean hasPermission(Context context, String permission) {if (context == null) {return false;}try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);if (info.requestedPermissions != null) {for (String p : info.requestedPermissions) {if (p.equals(permission)) {return true;}}}} catch (Exception e) {e.printStackTrace();}return false;}
package com.add.cf.util;import android.content.Context;
import android.view.WindowManager;public class WindowManage {private static WindowManager.LayoutParams wmParams;private static WindowManager mWindowManager;public static WindowManager getWindowManager(Context context) {if (mWindowManager == null) {mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);}return mWindowManager;}/*** @param context* @return*/public static WindowManager.LayoutParams getWindowManagerParams() {if (wmParams == null) {wmParams = new WindowManager.LayoutParams();}return wmParams;}
}

配置悬浮窗

   if (wmParams == null) {wmParams = WindowManage.getWindowManagerParams();}int layout_flag;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {layout_flag = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;} else {layout_flag = WindowManager.LayoutParams.TYPE_PHONE;}initWebView();wmParams.type = layout_flag;wmParams.format = PixelFormat.RGBA_8888;
//背景透明wmParams.alpha = 0.0f;wmParams.screenOrientation = 1;wmParams.flags =WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |//LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |//                            FLAG_FULLSCREEN |WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;//                wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;wmParams.width = WindowManager.LayoutParams.MATCH_PARENT;wmParams.height = WindowManager.LayoutParams.MATCH_PARENT;windowManager.addView(llRoot, wmParams);

这样就ok了

android 悬浮窗相关配置以及设置背景透明相关推荐

  1. Android悬浮窗使用及窗口设置相关

    显示一个悬浮窗,窗口类型设置,获取状态栏高度 1.显示一个悬浮窗 首先通过 getSystemService(Context.WINDOW_SERVICE) 拿到 WindowManager , 然后 ...

  2. Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案

    PerfectFloatWindow 项目地址:Alonsol/PerfectFloatWindow 简介: android 全局悬浮窗,目前已经适配华为,小米,vivo,oppo,一加,三星,魅族, ...

  3. Android悬浮窗

    今天给大家写一个这个Android悬浮窗的功能,这个功能一般在360,酷狗(桌面歌词),网易云音乐(桌面歌词)上面用到,一般开发是很少碰到这个功能的,但是这个悬浮窗功能可以帮助理解Android的绘制 ...

  4. android悬浮窗语音识别demo

    带有android悬浮窗的语音识别语义理解demo 如发现代码排版问题,请访问CSDN博客 Android桌面悬浮窗实现比较简单,本篇以一个语音识别,语义理解的demo来演示如何实现android悬浮 ...

  5. android动态获取悬浮窗,Android 悬浮窗实现

    Android悬浮窗实现中需要注意的两点是 1.Android 6.0之后的悬浮窗动态申请 2.Window 的type属性在Android8.0前后的适配 public abstract class ...

  6. Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了

    机型多杂,适配无法完全兼容,不如换种实现方式,性能比悬浮窗好,不需要权限,效果更好:https://blog.csdn.net/m0_38058826/article/details/10399339 ...

  7. Android 悬浮窗语音识别功能开发详解

    笔者是一个普通不能再普通的程序员,本着出处兴趣,花时间研究了一下,想实现手机的悬浮窗语音识别功能,这样不影响自己其它操作的,语音识别技术是用百度云语音sdk,应该不难实现,很难实现就是核心语音识别技术 ...

  8. Android 悬浮窗适配问题

    目录 最近在做悬浮窗相关功能,关于悬浮窗权限问题做一下版本区分的讲解,着急使用的可以直接去完整代码看 版本号>=23 大家最常用的就是获取是否有悬浮窗权限,如果没有就去开启 但是, Vivo是特 ...

  9. Android 悬浮窗功能的实现

    前言 我们大多数在两种情况下可以看到悬浮窗,一个是视频通话时的悬浮窗,另一个是360卫士的悬浮球,实现此功能的方式比较多,这里以视频通话悬浮窗中的需求为例.编码实现使用Kotlin.Java版本留言邮 ...

最新文章

  1. “认知计算”如何有效释放数据价值
  2. sqlserver Conversion failed when converting the nvarchar to data type int
  3. linux gdb#039;查找寄存器地址,【Linux跟踪和调试】gdb
  4. goole机器学习视频链接【学习笔记】
  5. 基于owncloud构建私有云储存网盘
  6. cmake 学习笔记(一)
  7. Python print和pprint两者的区别
  8. 【java笔记】of方法 JDK9对集合添加方法的优化
  9. 用友未获得服务器信息,客户端查询银行日记账没有数据出现,其他客户端和服务器正常...
  10. Android 四大组件学习之ContentProvider二
  11. 魔都上海为什么被称为“魔都”
  12. 物流软件之Microcity介绍
  13. 大数据处理的基本流程:数据抽取与集成+数据分析+数据解释
  14. win10系统,字体及软件内容特别小(亲试有效)
  15. ppt手动放映怎么设置_PPT如何设置幻灯片自动播放免除手动一张一张的点击
  16. python填充excel单元格颜色_openpyxl给excel填充颜色
  17. 【Nacos】Nacos注册中心的使用
  18. 《心流》| 精神熵和负熵
  19. 关于laravel中如何在where中使用in这回事
  20. javascript内置函数是什么

热门文章

  1. 资讯--2019年1月
  2. 「上下篇」同学,你的offer掉了——互联网求职志
  3. 【Python】之 os.path 模块详解
  4. 微信支付如何降低费率?
  5. 【热血传奇】 脚本开发之初识命令
  6. 章鱼网络第二条应用链 Myriad 主网正式启动
  7. 获取当前位置附近的小吃店功能
  8. 根据新浪微博的mid(url)获得微博id
  9. 山东科技职业学院单招计算机,2021年山东科技职业学院单招分专业招生计划表...
  10. 皮克斯理论:每一个动画角色都存在于同一个时空中