To add js-functions support to a WebView in android:
In order to generate android alert in webview while a js alert is generated we can use the following method
WebView myWebView = (WebView)findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true); /* Enable Javascript to make it function */
final Context mContext = this;
/* WebChromeClient must be set before loading the url using loadUrl */
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
new AlertDialog.Builder(mContext)
.setTitle("Title-Alert")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
};
});
myWebView.loadUrl("http://www.hiox.org/"); /* Call the webpage */
This helps in making response to a javascript alert generated from a webpage.
Similarly we can also add other function supports to the webview as follows
For onPageFinished
@Override
public void onPageFinished(WebView view, String url)
{
}
For onPageStarted
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
}
For onJsConfirm
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result)
{
new AlertDialog.Builder(mContext)
.setTitle("javaScript dialog")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.cancel();
}
})
.create()
.show();
return true;
}
For onJsPrompt
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,final JsPromptResult result)
{
new AlertDialog.Builder(mContext)
.setTitle("javaScript dialog")
.setView(v)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = "testexample"
result.confirm(value);
}
})
.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
result.cancel();
}
})
.setOnCancelListener(
new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
result.cancel();
}
})
.show();
return true;
};
For onProgressChanged
@Override
public void onProgressChanged(WebView view, int newProgress)
{
updateProgress(newProgress);
super.onProgressChanged(view, newProgress);
}
For onReceivedTitle
@Override
public void onReceivedTitle(WebView view, String title)
{
setTitle(title);
super.onReceivedTitle(view, title);
}
This would help in making control over the JS functions in Android.