flutter inappwebview android 权限 API NotAllowedError:写入权限被拒绝

问题描述 投票:0回答:1
flutter_inappwebview版本 6.0.0-beta.24+1
颤振版本 3.10.4
安卓版本 13

我们使用 Navigator.clipboard.writeText 在网络上复制文本。 在iOS上运行良好,但在AOS上出现以下错误。

错误信息 (android) WebView ID {{webviewID}} 使用 {messageLevel: 3, message: NotAllowedError: 写入权限被拒绝。} 调用“onConsoleMessage”。}

我认为这与android操作系统权限无关。我们在 androidManifest 上允许了外部存储权限,但仍然发生了这个问题。

我发现Web权限API(导航)不支持Android WebView。 我该如何处理这个麻烦呢?是否需要对webview或javascript开放更多权限?

在android webview上成功复制文本。

android flutter webview clipboard
1个回答
0
投票

您遇到的错误消息“NotAllowedError:写入权限被拒绝”通常发生在您尝试从 Android 中的 WebView 执行写入操作,但 WebView 的安全设置阻止其执行此操作时。这是一项保护用户设备和数据的安全功能。

要解决此问题,您可以尝试以下步骤:

1 检查权限 :您提到您在 AndroidManifest 中允许了外部存储权限,但此问题可能与 WebView 的权限系统有关,而不是与 Android 权限有关。确保您正确设置了必要的 WebView 权限。

2 WebView 设置:配置WebView 设置以允许写入操作。您可以在 Flutter 应用程序代码中执行此操作:

InAppWebView(
  initialOptions: InAppWebViewGroupOptions(
    android: AndroidInAppWebViewOptions(
      permissions: <String, dynamic>{
        'clipboardWrite': 'true',
      },
    ),
  ),
  // Other WebView configurations
)

在上面的代码中,我们显式地将Android WebView的clipboardWrite权限设置为true。这应该允许对剪贴板进行写入操作。

1 JavaScript 权限:如果上述步骤不起作用,则可能是 WebView 中的 JavaScript 代码尝试访问剪贴板并被阻止。您可以尝试显式授予 JavaScript 对剪贴板的访问权限:

InAppWebView(
  initialOptions: InAppWebViewGroupOptions(
    crossPlatform: InAppWebViewOptions(
      javascriptChannels: <JavascriptChannel>[
        JavascriptChannel(
          name: 'clipboard',
          onMessageReceived: (JavascriptMessage message) {
            // Handle clipboard operations here
          },
        ),
      ],
    ),
  ),
  // Other WebView configurations
)

在WebView中运行的JavaScript代码中,您可以使用剪贴板JavaScript通道与Flutter应用程序通信以执行剪贴板操作。

1 更新 WebView:确保您使用的是最新版本的 InAppWebView 包,因为 WebView 行为和权限可能会随着更新而改变。 如果这些解决方案都不起作用,请提供有关您的代码和 WebView 配置的更多信息,以便我可以为您提供进一步帮助。此外,请务必记住,从 WebView 访问剪贴板会受到安全限制,并且出于安全原因可能不允许执行某些操作。

© www.soinside.com 2019 - 2024. All rights reserved.