Reputation: 13
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
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
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
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