Android11 默人给第三方apk开通 SYSTEM_ALERT_WINDOW
时间: 2023-11-24 20:08:18 浏览: 101
非常抱歉,我之前的回答可能有点误导。在 Android 11 中,默认情况下,第三方应用程序无法直接获得 SYSTEM_ALERT_WINDOW 权限。
然而,Android 11 提供了一种新的方法来请求此权限,即通过使用窗口类型为 TYPE_APPLICATION_OVERLAY 或 TYPE_SYSTEM_ALERT 的窗口来创建悬浮窗口。请注意,这种方式仅适用于特定的用例,并且需要用户手动授予权限。
你可以按照以下步骤尝试在 Android 11 上为第三方应用程序开启 SYSTEM_ALERT_WINDOW 权限:
1. 在 AndroidManifest.xml 文件中添加以下权限:
```
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
```
2. 在需要使用悬浮窗口的地方创建一个窗口,并将窗口类型设置为 TYPE_APPLICATION_OVERLAY 或 TYPE_SYSTEM_ALERT。例如:
```
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_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
```
3. 请求悬浮窗口权限:
```
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(context)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + context.getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
}
```
以上代码示例仅供参考,具体实现取决于你的应用程序需求和架构。请确保遵循 Android 官方文档和最佳实践,以确保应用程序的兼容性和安全性。
请注意,用户需要手动授予悬浮窗口权限。你的应用程序应该处理权限请求结果,并在用户授予权限时使用悬浮窗口功能。
希望这些信息对你有所帮助!
阅读全文