WindowManager.LayoutParams.TYPE_PHONE;
时间: 2024-06-05 15:09:06 浏览: 15
WindowManager.LayoutParams.TYPE_PHONE是Android系统中的一个窗口类型,用于显示在电话界面之上的窗口,例如来电提醒、悬浮通知等。但是在Android 8.0及以上版本中,该类型已被弃用,应改为使用WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY。这是因为安卓8.0对于显示在应用程序之上的窗口增加了更加严格的安全限制。如果使用WindowManager.LayoutParams.TYPE_PHONE,会导致应用无法正常工作。
相关问题
android windowmanager 无法传递事件_Android悬浮窗的一种实现
对于 Android 悬浮窗的实现,可以使用 WindowManager 来实现。但是在实现过程中,可能会遇到 WindowManager 无法传递事件的问题。
这个问题的原因可能是因为 WindowManager 的类型不正确。在创建 WindowManager 的时候,需要指定正确的类型,例如 TYPE_APPLICATION_OVERLAY 类型。
下面是一个基本的悬浮窗实现示例:
```java
public class FloatingWindowService extends Service {
private WindowManager mWindowManager;
private View mFloatingView;
public FloatingWindowService() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
// 创建一个 WindowManager
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
// 创建一个悬浮窗 View
mFloatingView = LayoutInflater.from(this).inflate(R.layout.floating_window, null);
// 设置悬浮窗的类型为 TYPE_APPLICATION_OVERLAY
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
// 将悬浮窗添加到 WindowManager 中
mWindowManager.addView(mFloatingView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mFloatingView != null) {
// 从 WindowManager 中移除悬浮窗
mWindowManager.removeView(mFloatingView);
}
}
}
```
在这个示例中,我们通过创建一个 WindowManager,并将悬浮窗 View 添加到 WindowManager 中来实现悬浮窗。同时,我们还需要设置悬浮窗的类型为 TYPE_APPLICATION_OVERLAY 类型,以确保能够正常接收事件。
android studio悬浮窗怎么做
Android Studio中实现悬浮窗的方式有很多种,可以使用系统提供的WindowManager来实现,也可以使用第三方库如FloatWindow等来简化操作。下面是一个使用WindowManager的示例代码:
1. 添加权限
在AndroidManifest.xml文件中添加SYSTEM_ALERT_WINDOW权限:
```xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
```
2. 创建Service类
```java
public class FloatingWindowService extends Service {
private WindowManager windowManager;
private WindowManager.LayoutParams layoutParams;
private View floatingView;
@Override
public void onCreate() {
super.onCreate();
// 获取WindowManager对象
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
// 创建悬浮窗View
floatingView = LayoutInflater.from(this).inflate(R.layout.floating_window, null);
// 创建LayoutParams对象
layoutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
// 设置悬浮窗初始位置
layoutParams.x = 0;
layoutParams.y = 0;
// 添加悬浮窗到WindowManager
windowManager.addView(floatingView, layoutParams);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
// 移除悬浮窗
windowManager.removeView(floatingView);
}
}
```
3. 创建悬浮窗布局文件
在res/layout目录下创建floating_window.xml文件,设置悬浮窗布局。
4. 启动Service
在Activity中启动Service:
```java
Intent intent = new Intent(this, FloatingWindowService.class);
startService(intent);
```
以上就是使用WindowManager创建悬浮窗的简单示例,你可以根据自己的需求进行修改和扩展。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)