gpt4 book ai didi

java - 在 Android 上使用 Flutter 显示在其他应用程序之上

转载 作者:行者123 更新时间:2023-12-03 11:17:16 27 4
gpt4 key购买 nike

是否可以在 Android Flutter 应用程序上启用“显示在其他应用程序上”?
是否可以桥接到原生 Android API 以在 Flutter 应用程序上启用此功能?有人可以详细说明一下吗?

最佳答案

您描述的功能由应用程序权限处理<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> Documentation声明此许可

Allows an app to create windows using the type WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, shown on top of all other apps.


是不是有点模糊的解释?让我们看看 TYPE_APPLICATION_OVERLAY 是什么意思方法。

Application overlay windows are displayed above all activity windows (types between FIRST_APPLICATION_WINDOW and LAST_APPLICATION_WINDOW) but below critical system windows like the status bar or IME.


为什么我提到了这两行?
好吧,要回答您的问题,我们需要了解如何在普通的 android 中实现这一目标。我们确实知道它有效。问题是这种方法只适用于带有 UI 的 android 组件 - Activity 、服务、对话框(后两者需要一些额外的工作)。
这对 Flutter 意味着什么?这意味着在 clean Flutter 中没有设置来启用这种行为,只有底层平台提供的工具。
在 android 上下文中,使用此权限将允许您将此功能用于 android UI 容器(需要通过这样的权限管理屏幕明确请求)
if(!Settings.canDrawOverlays(this)){
// ask for setting
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_OVERLAY_PERMISSION);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_OVERLAY_PERMISSION) {
if (Settings.canDrawOverlays(this)) {
// permission granted...
}else{
// permission not granted...
}
}
}

而且我还不确定是否有 Flutter 模拟。
进一步探索发现,Flutter 在特殊的 android 容器中呈现自己 FlutterActivityFlutterFragment .
对于这两个,您可以在获得相关许可的情况下强制执行预期的行为。整个 Flutter UI 将有可能被绘制为覆盖。
但是,如果您只想将 Flutter UI 的某些部分绘制为叠加层,例如某些 Flutter 对话框或导航路线的一部分 - 您将无法轻松实现它(仅创建一个单独的 Android 原生 UI 容器和 channel 你的 flutter UI - AFAIK 不推荐,因为有多个 flutter UI 容器可能会导致问题)

关于java - 在 Android 上使用 Flutter 显示在其他应用程序之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64210724/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com