Allow all market: // links from within the web browser to open the Google Play store

I have some links in my webview that are market: // links. When my users click on them, this leads to the fact that the page cannot be found.

How can I resolve all links that start from the market: // automatically open the Google Play store when they are used? I tried:

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

but it seemed to do nothing. I am new to this, so any help would be greatly appreciated. Also, FYI, I cannot change the market: // links to play.google.com myself. They belong to my advertiser.

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; } } 
+4
source share
3 answers

You can decide what to do by looking at the URL scheme, if the Google Play Store application is installed, you can open the details page in the Play Store application, otherwise you can display the Google Play application web page.

 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; } }); 
+13
source

you can use this code also if it helps you:

 // 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))); 
0
source
  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
source

All Articles