首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >允许webview中的所有“market://”链接打开Google Play商店

允许webview中的所有“market://”链接打开Google Play商店
EN

Stack Overflow用户
提问于 2013-01-28 11:27:09
回答 3查看 18.6K关注 0票数 5

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

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

代码语言:javascript
运行
复制
final Intent intent = new Intent("android.intent.action.VIEW");
            intent.setData(Uri.parse("market://details?id="));
            startActivity(intent);
        }

但这似乎没有起到任何作用。我对此非常陌生,因此任何帮助都将不胜感激。另外,仅供参考,我不能自己更改play.google.com的市场://链接。它们是我的广告商寄来的。

有没有什么我可以把它包含在下面的代码中:

代码语言:javascript
运行
复制
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;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2013-11-22 08:17:25

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

代码语言:javascript
运行
复制
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;
    }
});
票数 16
EN

Stack Overflow用户

发布于 2013-01-28 13:51:59

如果这段代码对你有帮助,你也可以像这样使用它:

代码语言:javascript
运行
复制
// 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)));
票数 1
EN

Stack Overflow用户

发布于 2015-01-11 20:07:17

代码语言:javascript
运行
复制
 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;
 }    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14555040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档