package io.bxbxbai.zhuanlan.utils; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.webkit.JavascriptInterface; import android.webkit.WebView; import io.bxbxbai.zhuanlan.R; /** * Created by xuebin on 15/7/8. */ public class JsHandler { Activity activity; String TAG = "JsHandler"; WebView webView; public JsHandler(Activity activity, WebView webView) { this.activity = activity; this.webView = webView; } /** * This function handles call from JS */ public void jsFnCall(String jsString) { showDialog(jsString); } /** * This function handles call from Android-Java */ @JavascriptInterface public void javaFnCall(String jsString) { final String webUrl = "javascript:diplayJavaMsg('" + jsString + "')"; // Add this to avoid android.view.windowmanager$badtokenexception unable to add window if (!activity.isFinishing()) // load url on UI main thread activity.runOnUiThread(new Runnable() { @Override public void run() { webView.loadUrl(webUrl); } }); } /** * function shows Android-Native Alert Dialog */ public void showDialog(String msg) { AlertDialog dialog = new AlertDialog.Builder(activity).create(); dialog.setTitle(activity.getString(R.string.app_name)); dialog.setMessage(msg); dialog.setButton(DialogInterface.BUTTON_POSITIVE, activity.getString(android.R.string.ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, activity.getString(android.R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); dialog.show(); } }