Wessam Reda
Wessam Reda

Reputation: 13

Android WebView click open with in WebView not a default browser?

I did one sample application using WebView, in that web view the URL comes from web services. It's working fine, but if I click any link within that WebView, its automatically go for default web browser. But I want to open within my application web view only. Here my code:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String url ="http://www.cementegypt.com/m/";
        WebView view =(WebView) this.findViewById(R.id.webView1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Upvotes: 1

Views: 7028

Answers (3)

Ravi
Ravi

Reputation: 2367

You Should override the shouldOverrideUrlLoading() of WebViewClient class ,here it will be like-

    w.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            super.shouldOverrideUrlLoading(view, url);

            if(url!=null&&(URLUtil.isHttpsUrl(url)||URLUtil.isHttpUrl(url)))
            {
                view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }
return false;
}});

Upvotes: 0

NguyenVanTuMTA
NguyenVanTuMTA

Reputation: 21

It is because WebView.loadUrl is used to VIEW WEBPAGE ONLY, and yor seem to be like create yourself Browser, it is another problem. Try using somethings like this:

WebView w;    

w.setWebViewClient(new WebViewClient(){

        @Override
        public void onLoadResource(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onLoadResource(view, url);
        }

        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            // TODO Auto-generated method stub
            super.onReceivedError(view, errorCode, description, failingUrl);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            return super.shouldOverrideUrlLoading(view, url);
        }

    });

Upvotes: 0

Shobhit Puri
Shobhit Puri

Reputation: 26007

Try:

WebView view =(WebView)findViewById(R.id.webView1);
view.getSettings().setJavaScriptEnabled(true);
view.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});

Source: This answer by @momo on very similar question: Link should be open in same web view in Android . Hope this helps.

Upvotes: 12

Related Questions