I've in the following code the progressbar working on the first page load. after when I click on other links, the progrss bar is not shown ?
If somebody can tell me how to change this code to have the progress bar working on all loading ?
Thanks,
André.
public class Android_Activity extends Activity {
WebView webview;
@Override
protected void onSaveInstanceState(Bundle outState) {
WebView webview = (WebView) findViewById(R.id.webview);
webview.saveState(outState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the main content view
setContentView(R.layout.main);
// check if an instance is stored and so restore it
if (savedInstanceState != null){
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);
}
final ProgressDialog progressBar = ProgressDialog.show(this, getString(R.string.progress_title),
getString(R.string.progress_msg));
webview = (WebView)findViewById(R.id.webview);
webview.setHttpAuthUsernamePassword(getString(R.string.kdg_host),
getString(R.string.kdg_realm),
getString(R.string.kdg_user_name),
getString(R.string.kdg_password)
);
//webview.setWebViewClient(new myWebViewClient());
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webview.getSettings().setRenderPriority(RenderPriority.HIGH);
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient() {
public void onPageStarted(WebView view, String url) {
if (!progressBar.isShowing()) {
progressBar.show();
}
}
public void onPageFinished(WebView view, String url) {
//super.onPageFinished(view, url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
});
webview.loadUrl(getString(R.string.base_url));
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
boolean error = false;
// check if it's an MAILTO URL
if(url.substring(0, 6).equalsIgnoreCase("mailto")){
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent .setType("plain/text");
emailIntent .putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{url.substring(7)});
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
return true;
}
// check if it's an EXT:// (Call Web Browser)
else if(url.substring(0, 6).equalsIgnoreCase("ext://")){
Uri uriUrl = Uri.parse(url.substring(6));
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
return true;
}
// check if it's an RTSP URL
else if(url.substring(0, 4).equalsIgnoreCase("rtsp")){
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
// else if it's an MP4 file link
else if(url.endsWith(".mp4")){
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);
return true;
}
// else if it's a 3GP file link
else if(url.endsWith(".3gp")){
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/3gp");
startActivity(intent);
return true;
}
// else if it's a MP3 file link
else if(url.endsWith(".mp3")){
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);
return true;
}
// else if it's a page URL
else{
URL Url;
try {
Url = new URL(url);
HttpURLConnection httpURLConnection = (HttpURLConnection) Url
.openConnection();
int response = httpURLConnection.getResponseCode();
if ((response >= 200)&&(response < 400))
//view.loadUrl(url);
error = false;
else
error = true;
} catch (Exception e) {
error = true;
}
}
// if an error occurred
if (error) {
showErrorDialog();
}
view.loadUrl(url);
return true;
}
}
@Override
public void onResume() {
super.onResume();
webview.reload();
}
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
showErrorDialog();
}
public void showErrorDialog(){
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(getString(R.string.error_title));
alertDialog.setMessage(getString(R.string.error_msg));
alertDialog.setButton(getString(R.string.ok_btn),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
});
alertDialog.show();
}
}
Use below working code ::