AndroidアプリでWebViewを使用しているときに、GooglePlayで配信しているアプリのダウンロードページへのリンクをクリックしても、GooglePlayアプリが起動しないことがあります。
(以下の画像は、弊社で配信している『カラダノートforAndroid』で動作させているものです。)
アプリのダウンロードページへのリンクをクリックすると……
普通のブラウザでアクセスしようとしてエラーになってしまう。
そういう場合は、WebViewをコードで制御して、アクセスするURLによってGooglePlayアプリを起動するなどの処理を実装しましょう。
WebView webView; webView = (WebView) findViewById(R.id.○○○); //各種設定 webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.setVerticalScrollbarOverlay(true); webView.getSettings().setBuiltInZoomControls(true); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setJavaScriptEnabled(true); //WebViewに独自のWebViewCliantをセット webView.setWebViewClient(new MyWebViewClient(MainActivity.this));
このようにWebViewを宣言したのち、セットするWebViewCliantの方で、
public class MyWebViewClient extends WebViewClient { Activity mainActivity; public MyWebViewClient(Activity mainActivity) { super(); this.mainActivity = mainActivity; } //ページの読み込み開始 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { mainActivity.setProgressBarIndeterminateVisibility(true); } //ページの読み込み完了 @Override public void onPageFinished(WebView view, String url) { mainActivity.setProgressBarIndeterminateVisibility(false); } //ページの読み込み失敗 @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(view.getContext(), "エラー", Toast.LENGTH_LONG).show(); } // リンクをタップしたときに標準ブラウザを起動させない。 @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { // アンドロイドマーケットのときは例外 if(url.startsWith("http:") || url.startsWith("https:")) { return false; } Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); mainActivity.startActivity(intent); return true; } }
このようにGooglePlayが起動します!
やっぱりAndroidアプリでWebを見ている以上、GooglePlayへのリンクをクリックしたら自動でGooglePlayアプリが立ち上がるようにしたいですよね!