WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
时间: 2024-05-28 12:10:34 浏览: 14
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY 是用于 Android 8.0 及更高版本中创建悬浮窗口的布局参数类型。这个参数类型允许应用程序在其他应用程序的顶部显示一个视图,而不需要申请 SYSTEM_ALERT_WINDOW 权限。该参数类型可以用于创建一些有用的应用程序,例如悬浮式音乐播放器、智能助手等。但是需要注意的是,使用 TYPE_APPLICATION_OVERLAY 时需要确保应用程序当前处于前台,否则将无法创建悬浮窗口。
相关问题
WindowManager.LayoutParams.TYPE_PHONE;
WindowManager.LayoutParams.TYPE_PHONE是Android系统中的一个窗口类型,用于显示在电话界面之上的窗口,例如来电提醒、悬浮通知等。但是在Android 8.0及以上版本中,该类型已被弃用,应改为使用WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY。这是因为安卓8.0对于显示在应用程序之上的窗口增加了更加严格的安全限制。如果使用WindowManager.LayoutParams.TYPE_PHONE,会导致应用无法正常工作。
// 创建 GLSurfaceView 对象 GLSurfaceView glSurfaceView = new GLSurfaceView(this); // 将 GLSurfaceView 添加到 WindowManager 中 WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // 需要添加 SYSTEM_ALERT_WINDOW 权限 WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(glSurfaceView, params);使用这个代码出现的 permission denied for window type 2038
这个问题是因为你使用了 `TYPE_APPLICATION_OVERLAY` 权限,而这个权限需要在应用的 `AndroidManifest.xml` 文件中添加 `android.permission.SYSTEM_ALERT_WINDOW` 权限声明。你可以尝试在 `AndroidManifest.xml` 文件中添加以下内容:
```
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
```
如果已经添加了这个权限声明并且仍然出现 `permission denied for window type 2038` 错误,那么可能是因为你的应用没有获取到这个权限。你可以在应用启动时请求这个权限,具体方法可以参考 Google 官方文档。