AndroidアプリでWebViewを使用しているときに、GooglePlayで配信しているアプリのダウンロードページへのリンクをクリックしても、GooglePlayアプリが起動しないことがあります。

 

(以下の画像は、弊社で配信している『カラダノートforAndroid』で動作させているものです。)

20131120_184633

アプリのダウンロードページへのリンクをクリックすると……

20131120_184750

普通のブラウザでアクセスしようとしてエラーになってしまう。

 

そういう場合は、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;
    }
}

こう書くと、
20131120_184447
リンクをクリックすると……
20131120_184505

このようにGooglePlayが起動します!

 

やっぱりAndroidアプリでWebを見ている以上、GooglePlayへのリンクをクリックしたら自動でGooglePlayアプリが立ち上がるようにしたいですよね!

 
Set your Twitter account name in your settings to use the TwitterBar Section.