【问题标题】:Webview disabled to open installed Apps by clicking on linkWebview 无法通过单击链接打开已安装的应用程序
【发布时间】:2022-07-02 15:19:40
【问题描述】:

我的项目中有一个简单的WebView。用户可以谷歌搜索任何东西。我现在遇到的问题是,通过单击某些链接,我会自动重定向到特定的应用程序(如果我安装了它)。

例子:

我的 iPhone 上有阿迪达斯应用程序,然后点击“阿迪达斯”链接 -> 我被重定向到阿迪达斯应用程序。这应该发生。相反,链接应该在我的WebView 中打开。

这是我的webView

  bool _isLoading = true;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Web View Example'),
      ),
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: WebView(
                initialUrl:
                    'https://www.sneakersnstuff.com/de/product/48276/adidas-4d-futurecraft?country_override=DE&utm_content=cpcadssnscf&gclid=CjwKCAjwoduRBhA4EiwACL5RP4YhIZ818uzJTmO8gKLX3Z6Vvff740OjFsxs2nL0yzf-uGyzW9ak6RoCxyEQAvD_BwE',
                javascriptMode: JavascriptMode.unrestricted,
                onWebViewCreated: (WebViewController webViewController) {
                  _controller = webViewController;
                },
                javascriptChannels: <JavascriptChannel>{
                  _extractDataJSChannel(context),
                },
                onPageStarted: (String url) {
                  setState(() {
                    _isLoading = true;
                  });
                },
                onPageFinished: (String url) {
                  setState(() {
                    _imagesWithSize = [];

                    _currentUrl = url;
                    _isLoading = false;
                  });
                },
              ),
            ),
            Row(
              children: [
                IconButton(
                  onPressed: () {
                    _controller.goBack();
                  },
                  icon: Icon(
                    Icons.arrow_back,
                    size: 50,
                  ),
                ),
                IconButton(
                  onPressed: () {
                    _controller.goForward();
                  },
                  icon: Icon(
                    Icons.arrow_forward,
                    size: 50,
                  ),
                ),
              ],
            ),
            SizedBox(
              height: 20,
            ),
            RoundedCornersTextButton(
              title: 'Google',
              isEnabled: !_isLoading,
              onTap: () async {
                await _controller.loadUrl('https://www.google.com');
              },
            ),
          ],
        ),
      ),
    );
  }

有什么办法可以阻止其他应用打开吗?

【问题讨论】:

    标签: flutter dart webview uiwebview


    【解决方案1】:

    我不认为这是 webview 的问题。

    实际上有一些网站,当您打开它们时,它们会检查您是否使用手机,如果是这种情况,它们还会检查您是否已经在您的设备上安装了该应用程序。如果也是如此,则默认打开移动应用程序。

    您能否使用谷歌搜索(在 webview 内)访问其他网站,看看是否存在相同的行为?

    【讨论】:

    • 是的,就是这样。但我想阻止这种情况。有什么办法可以预防吗?
    【解决方案2】:

    您是否设法防止在 Flutter webview 中出现这种行为?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2020-03-23
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多