代码之家  ›  专栏  ›  技术社区  ›  Vishal Monga

允许来自webview内的所有“market://”链接打开play store

  •  2
  • Vishal Monga  · 技术社区  · 6 年前

    我的webview中有一些链接是market://links。当我的用户点击它们时,它会给它们一个找不到页面的错误。

    如何允许所有以market://开头的链接在被点击时自动打开google play商店?我试过:

    final Intent intent = new Intent("android.intent.action.VIEW");
            intent.setData(Uri.parse("market://details?id="));
            startActivity(intent);
        }
    

    但那似乎没什么用。我对这件事还不太熟悉,所以任何帮助都将不胜感激。另外,仅供参考,我无法更改play.google.com的market://links。他们是我的广告商寄来的。

    我是否可以将其包含在以下代码中:

          public boolean shouldOverrideUrlLoading(WebView paramWebView, String paramString) {
              if (DEBUG)
                  Log.e("shouldOverride", paramString);
      if (Uri.parse(paramString).getHost()!=null && 
         Uri.parse(paramString).getHost().equals("market.android.com")) && 
         (!paramString.contains("facebook.com")) && 
            (!Uri.parse(paramString).getHost().contains("twitter.com")) && 
         (!Uri.parse(paramString).getHost().equals("play.google.com"))
                    && (!Uri.parse(paramString).getHost().contains("bit.ly")) 
         && (!Uri.parse(paramString).getHost().contains("plus.google.com")) && 
         (!Uri.parse(paramString).getHost().contains("youtube.com"))){
                if(isAppOrGamePage(paramString)){
                    final Intent intent = new Intent(MainActivity.this, PageActivity.class);
                    intent.putExtra("app_url", paramString);
                    startActivity(intent);
                } else
                    return false;
                } else {
                final Intent intent = new Intent("android.intent.action.VIEW", 
                    Uri.parse(paramString));
                    startActivity(intent);
                   }
    
            return true;
          }
         }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Himanshu itmca    6 年前

    试试这个密码, 对我有用。

    webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if (Uri.parse(url).getScheme().equals("market")) {
                        try {
                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.setData(Uri.parse(url));
                            Activity activity = (Activity) view.getContext();
                            activity.startActivity(intent);
                            return true;
                        } catch (ActivityNotFoundException e)
                        {
                            // Google Play app is not installed, you may want to open the app store link
                            // Link will open your browser
                            Uri uri = Uri.parse(url);
                            view.loadUrl("http://play.google.com/store/apps/" + uri.getHost() + "?" + uri.getQuery());
                            return false;
                        }
    
                    }
                    return false;
                }
            });