![JAR search and dependency download from the Maven repository](/logo.png)
com.sdklite.sphere.hybrid.HybridWebChromeClient Maven / Gradle / Ivy
package com.sdklite.sphere.hybrid;
import java.util.Locale;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.webkit.ConsoleMessage;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.TextView;
import android.widget.Toast;
import com.sdklite.sphere.logging.Logger;
import com.sdklite.sphere.logging.LoggerFactory;
/**
* The hybrid web chrome client
*
* @author johnsonlee
* @since 1.0.0
*/
public class HybridWebChromeClient extends WebChromeClient {
static final Logger logger = LoggerFactory.getLogger("HybridWebChromeClient");
public HybridWebChromeClient(final HybridWebView view) {
}
@Override
public void onProgressChanged(final WebView view, final int newProgress) {
final Context context = view.getContext();
if (context instanceof Activity) {
((Activity) context).setProgress(newProgress);
}
}
@Override
public void onReceivedTitle(final WebView view, final String title) {
final Context context = view.getContext();
if (context instanceof Activity) {
((Activity) context).setTitle(title);
}
}
@Override
public void onCloseWindow(final WebView window) {
final Context context = window.getContext();
if (context instanceof Activity) {
((Activity) context).finish();
}
}
@Override
public boolean onJsAlert(final WebView view, final String url,
final String message, final JsResult result) {
final Context context = view.getContext();
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
result.confirm();
return true;
}
@Override
public boolean onJsConfirm(final WebView view, final String url,
final String message, final JsResult result) {
new AlertDialog.Builder(view.getContext())
.setTitle(android.R.string.dialog_alert_title)
.setMessage(message)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
result.confirm();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
result.cancel();
}
}).create().show();
return true;
}
@Override
public boolean onJsPrompt(final WebView view, final String url,
final String message, final String defaultValue,
final JsPromptResult result) {
final TextView input = new TextView(view.getContext());
if (!TextUtils.isEmpty(defaultValue)) {
input.setText(defaultValue);
}
new AlertDialog.Builder(view.getContext())
.setTitle(message)
.setView(input)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
result.confirm(input.getText().toString());
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
result.cancel();
}
}).create().show();
return true;
}
@Override
public void onConsoleMessage(final String message, final int lineNumber, final String sourceID) {
final Locale locale = Locale.getDefault();
logger.info(String.format(locale, "%s#%d: %s", sourceID, lineNumber, message));
}
@Override
public boolean onConsoleMessage(final ConsoleMessage consoleMessage) {
final Locale locale = Locale.getDefault();
final String message = consoleMessage.message();
final int lineNumber = consoleMessage.lineNumber();
final String sourceID = consoleMessage.sourceId();
final String msg = String.format(locale, "%s#%d: %s", sourceID, lineNumber, message);
switch (consoleMessage.messageLevel()) {
case DEBUG:
logger.debug(msg);
break;
case ERROR:
logger.error(msg);
break;
case LOG:
logger.info(msg);
break;
case TIP:
logger.trace(msg);
break;
case WARNING:
logger.warn(msg);
break;
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy