Vishal Monga
Vishal Monga

Reputation: 282

Allow all 'market://' links from inside a webview to open Play store

I have some links in my webview that are market:// links. When my users tap on them, it gives them a page cannot be found error.

How can I allow all links that begin with market:// to automatically open the Google play store when they are tapped? I tried:

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

but that didn't seem to do anything. I am pretty new to this so any help would be appreciated. Also, FYI, I cannot change the market:// links to play.google.com myself. They are from my advertiser.

Is there anyway I can include it in this code:

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

Upvotes: 3

Views: 1749

Answers (1)

Himanshu itmca
Himanshu itmca

Reputation: 395

Try this code, It works for me.

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

Upvotes: 3

Related Questions