すべての JavaScript インターフェイス メソッドを無視する、または少なくともそのように見える Web ビューがあります。通常のブラウザーから Web サイトを実行すると、予想どおりインターフェイスが定義されていないためエラーがスローされますが、これにより、少なくともインターフェイス メソッドが呼び出されていると思われますが、何か他のことが間違っています。誰かが私が何を理解するのを手伝ってくれますか?
ものを宣言する
@Override
protected void onPostExecute(ValidationResult validation)
{
if (validation.wasSuccessful)
{
URL = validation.message;
wv = (WebView) findViewById(R.id.webView);
wv.addJavascriptInterface(new KioskInterface(wv.getContext()), "Android");
WebSettings ws = wv.getSettings();
ws.setJavaScriptEnabled(true);
wv.loadUrl(URL);
}
else
{
errorAlert(title, msg + "\nContact network management.");
}
}
キオスク インターフェイス クラス
public class KioskInterface {
Context c;
KioskInterface(Context context)
{
c = context;
}
@JavascriptInterface
public void showToast()
{
Toast.makeText(c, "Hiding Keyboard", Toast.LENGTH_LONG).show();
}
}
Javascript
function example() {
Android.showToast();
}
トーストは表示されませんが、エラーや壊れた動作も発生しません。