-1

The below code is used to open web page on my android app . I want to open market:// links on webview . I tried some example that were discussed here . But not worked with me . How can I allow all links that begin with market:// to automatically open the Google play store when they are tapped?

package my.webview.test.com.fragment;
import radioklub.sekhontech.com.R;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.webkit.DownloadListener;


public class WebFragment extends Fragment {
//Constant
private static final String TAG = "WebFragment";
// Member variables
private String mUrl;
private boolean mIsLoadFinish = false;

// View Member Variables
private WebView mWebView;
private WebViewClient mWebViewClient;
private Button mBtnBack;
private Button mBtnForward;
private Button mBtnRefresh;

@
Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@
Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_web, null);

    // Init WebView
    initWebView(view);

    return view;
}

@
Override
public void onResume() {
    super.onResume();
    mWebView.loadUrl(mUrl);
    enableControllerButton();

    mWebView.setDownloadListener(new DownloadListener() {
        public void onDownloadStart(String url, String userAgent,
        String contentDisposition, String mimetype,
        long contentLength) {
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(url));
            startActivity(i);
        }
    });
}



// Property access
public void setUrl(String url) {
    mUrl = url;
}




/*
 * Internal functions This section contain private and protected level
 * functions which function is only used inside this class or its subclass
 */

// Init webView, website use javascript, so enable javascript
// is a must
@
SuppressLint("SetJavaScriptEnabled")
private void initWebView(View view) {
    // Buttons setups
    mBtnBack = (Button) view.findViewById(R.id.btn_back);
    mBtnForward = (Button) view.findViewById(R.id.btn_forward);
    mBtnRefresh = (Button) view.findViewById(R.id.btn_refresh);
    // Setup for button controller
    mBtnRefresh.setOnClickListener(new OnClickListener() {@
        Override
        public void onClick(View v) {
            mWebView.reload();
            enableControllerButton();
        }
    });
    mBtnBack.setOnClickListener(new OnClickListener() {@
        Override
        public void onClick(View v) {
            mWebView.goBack();
            enableControllerButton();
        }
    });
    mBtnForward.setOnClickListener(new OnClickListener() {

        @
        Override
        public void onClick(View v) {
            mWebView.goForward();
            enableControllerButton();
        }
    });

    initClient();
    mWebView = (WebView) view.findViewById(R.id.webView);
    WebSettings settings = mWebView.getSettings();
    settings.setJavaScriptEnabled(true);
    mWebView.setWebViewClient(mWebViewClient);
}

/*
 * Internal functions
 */
private void enableControllerButton() {
    if (mIsLoadFinish) {
        mBtnRefresh.setEnabled(true);
        if (mWebView.canGoBack()) {
            mBtnBack.setEnabled(true);
        } else {
            mBtnBack.setEnabled(false);
        }
        if (mWebView.canGoForward()) {
            mBtnForward.setEnabled(true);
        } else {
            mBtnForward.setEnabled(false);
        }
    } else {
        mBtnBack.setEnabled(false);
        mBtnForward.setEnabled(false);
    }
}

private void initClient() {
    mWebViewClient = new WebViewClient() {@
        Override
        public void onPageFinished(WebView view, String url) {
            mIsLoadFinish = true;
            enableControllerButton();
            Log.d(TAG, "Finish loading");
        }
    };
}

}

2 Answers2

1
    webView.setWebViewClient(new WebViewClient()
    {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        { 
            if (url.contains("market://"))
            {
                    try
                    {
                        view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                    } catch (android.content.ActivityNotFoundException e)
                    {
                        e.printStackTrace();
                    }
                    return true;
            }
            return super.shouldOverrideUrlLoading(view, url);
        }
    });
    webView.loadUrl(url);
0

Make your application link like this,

GoogleCamera application link

This link open anywhere to playstore.

For more info please read answer

Community
  • 1
  • 1
Krunal Indrodiya
  • 782
  • 2
  • 7
  • 19