JavaScript関数WebChromeClient
からメッセージボックスを表示したい場合は必須ではありません。alert
JavaScript コードとクライアント側 Android コードの間のインターフェースを作成できます。
以下の例では、 JavaScript の関数を使用する代わりに、 JavaScript コードで Android コードのメソッドを呼び出してを表示できます。これは、アラートを表示する最も便利で広くサポートされている方法であることがわかりました。Dialog
alert()
Android アプリケーションに次のクラスを含めます。
ファイル: WebAppInterface.java
import android.content.Context;
import android.webkit.JavascriptInterface;
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a Message box from the web page */
@JavascriptInterface
public void androidAlert(String message) {
DialogBox dbx = new DialogBox();
dbx.dialogBox(message, "I get it", "",mContext);
}
}
ファイル: DialogBox.java
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
public class DialogBox {
public boolean dialogBox(String msg, String okButton, String cancelButton, final Context activity) {
Dialog v = null;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity);
alertDialogBuilder.setMessage(msg);
if (okButton != "") {
alertDialogBuilder.setPositiveButton(okButton,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) { /**/ }
});
}
if (cancelButton != "") {
alertDialogBuilder.setNegativeButton(cancelButton,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) { /**/ }
});
}
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return true;
}
}
次に、withで実行される JavaScript にクラスをバインドし、 interface という名前を付けます。WebAppInterface
WebView
addJavascriptInterface()
Android
WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
Android
これにより、で実行される JavaScript用に呼び出されるインターフェースが作成されますWebView
。この時点で、Web アプリケーションは WebAppInterface
クラスにアクセスできます。以下は、ユーザーがボタンをクリックしたときに新しいインターフェイスを使用してメッセージ ボックスを作成する HTML と JavaScript の一部です。
<input type="button" value="Alert!" onClick="javascript:Android.androidAlert('It works!');" />
ボタンをクリックすると、Android
インターフェイスを使用してメソッドが呼び出さ WebAppInterface.androidAlert()
れます。
ちょっとした警告:を使用addJavascriptInterface()
すると、JavaScript で Android アプリケーションを制御できるようになります。これは非常に便利な機能である場合もあれば、危険なセキュリティ上の問題になる場合もあります。. _ addJavascriptInterface()
_WebView