【问题标题】:Allow all 'market://' links from inside a webview to open Google Play store允许 web 视图中的所有“market://”链接打开 Google Play 商店
【发布时间】:2015-01-11 23:06:48
【问题描述】:

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

如何让所有以 market:// 开头的链接在被点击时自动打开 Google Play 商店?我试过了:

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

但这似乎没有任何作用。我对此很陌生,因此将不胜感激。另外,仅供参考,我自己无法将 market:// 链接更改为 play.google.com。它们来自我的广告客户。

无论如何我可以将它包含在此代码中:

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;
    }
}

【问题讨论】:

标签: android android-intent android-webview


【解决方案1】:

您可以通过查看 url 的方案来决定做什么,如果安装了 Google Play Store 应用程序,您可以在 Play Store 应用程序中打开详细信息页面,否则您可以显示应用程序的 Google Play 网页

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 host = (Activity) view.getContext();
                host.startActivity(intent);
                return true;
            } catch (ActivityNotFoundException e) {
                // Google Play app is not installed, you may want to open the app store link
                Uri uri = Uri.parse(url);
                view.loadUrl("http://play.google.com/store/apps/" + uri.getHost() + "?" + uri.getQuery());
                return false;
            }

        }
        return false;
    }
});

【讨论】:

    【解决方案2】:

    如果对您有帮助,您也可以像这样使用此代码:

    // It will not work in android simulator as it does not have Google Play Store
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+APP_ID)));
    

    【讨论】:

    • 这似乎不起作用。我已经用我的代码的 sn-p 更新了我的原始帖子。如果有机会,请看一看。
    【解决方案3】:
     if (url.startsWith("market://")||url.startsWith("vnd:youtube")||url.startsWith("tel:")||url.startsWith("mailto:"))
    {
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setData(Uri.parse(url)); 
        startActivity(intent);
        return true;
     }    
    

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2018-12-06
      • 1970-01-01
      相关资源
      最近更新 更多