【问题标题】:Android WebView and Market urlAndroid WebView 和市场网址
【发布时间】:2015-03-02 15:48:15
【问题描述】:

我使用 webview 来浏览我的网站。我的网站包含市场网址。 我尝试在单击市场 URL 时启动 Playstore 应用程序(下面的代码),但该应用程序打开了最后一个打开的应用程序而不是 Playstore。 如果我回来重新打开我的应用程序,Playstore 会在我的 webView 中打开。 我需要帮助,谢谢。

    mWebview.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if (url.startsWith("market://"))
                {
                    Intent intent = new Intent(Intent.ACTION_VIEW); 
                    intent.setData(Uri.parse(url)); 
                    startActivity(intent);
                    return true;
                 }
                else{
                    view.loadUrl(url);
                    return true;
                    }

        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, "Unable to open URL\nPlease Activate WiFi or MobileData and Try Again", Toast.LENGTH_LONG).show();
        }
    });

我解决了这个代码更改的问题。为我工作完美。从任何市场:// url 开放市场

public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null && url.startsWith("market://")) {
                Intent i = new Intent("android.intent.action.VIEW");
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.setData(Uri.parse(url));
                startActivity(i);

                return true;
            } else {
                return false;
            }
        }

【问题讨论】:

  • 您的网站中是否正确指定了市场网址。网址是否以“market://”而不是“http://”开头的正确格式
  • 是的 url 是市场格式 "market://" 如果我​​在浏览器中浏览我的网站并单击 url playstore 应用程序打开正确

标签: android url webview google-play


【解决方案1】:

首先,您必须检查用户设备上是否存在 Play 商店。如果未启用 Play 商店,则在您的 web 视图中打开商店,否则打开商店应用程序。

 final String appPackageName = yourPackagesName;
    try {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + yourPackagesName)));
    } catch (android.content.ActivityNotFoundException anfe) {
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + yourPackagesName)));
    }

【讨论】:

  • 谢谢乔治,但这个解决方案对我不起作用。在我的网站中,我有各种市场链接,所以我不能使用字符串“yourPackageName”任何替代解决方案?
  • 根据用户单击的 URL,您将相应地替换 yourPackageName 字符串。你能告诉我们你如何格式化你的 URL 的例子吗?如果您在 URL 中提及包,您将能够从那里提取包的名称并将其设置为 yourPackageName 的值。
  • 这是我网站中的一个网址:“market://details?id=com.google.android.apps.adm&hl=en”(我建议的应用程序)。如果我在 Android 浏览器中浏览我的网站,请单击正确打开 Playstore 的 URL,但在 Web 视图中不起作用。
  • com.google.android.apps.adm 是应用程序的包名。您可以在yourPackageName 上分配该字符串。当您说在 webview 中不起作用时,您是什么意思?你有错误吗?
猜你喜欢
  • 1970-01-01
  • 2012-04-21
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多