如何在 Android 上使用 ChromeSafariBrowser 从 InAppWebView 插件为 Flutter 打开或下载 pdf 文件?

How to open or download pdf file with ChromeSafariBrowser from InAppWebView plugin for Flutter on Android?

提问人:Anna R. 提问时间:10/19/2023 更新时间:10/19/2023 访问量:36

问:

对于我的 Flutter 应用程序,我需要能够在不离开应用程序的情况下在 Android 上打开/下载 pdf 文件。 简而言之,现在它看起来像这样:

...
InAppWebView(
  ...
shouldOverrideUrlLoading: (controller, nav) async {
                        final Uri? url = nav.request.url;
                        WebViewUtils.launchInBrowserOverlay(result?.value);
                      },
... );

...

static launchInBrowserOverlay(value) async {
    Uri uri = Uri.parse(value);
    ChromeSafariBrowser().open(
          url: uri,
          options: ChromeSafariBrowserClassOptions(
            android: AndroidChromeCustomTabsOptions(
              packageName: 'com.android.chrome',
            ),
          ),
        );
  }

总而言之,它的工作原理(pdf文件将被下载)有一些限制。

问题是当文件已经下载时,浏览器只显示“下载待定...”。这不是理想的行为。最好的解决方案是在不离开应用程序的情况下显示 pdf 文件。另一种选择是即使文件已经下载,也可以开始下载(我可以用 from 来做,但然后我会离开应用程序)。launchUrl()url_launcher

安卓 Flutter 飞镖 google-chrome flutter-inAppWebView

评论

0赞 Feyiz Oktay Aydır 10/19/2023
我对此了解不多,但我认为您需要根据文档中的内容在 AndroidManifest 中进行声明。示例清单
0赞 Anna R. 10/20/2023
谢谢你的建议!不幸的是,它没有帮助。

答: 暂无答案