私はアンドロイドアプリケーションでWebページを表示するためにWebViewを使用しています。 https://developer.android.com/guide/webapps/webview.htmlAndroid webview - JavaScriptコールバックが機能していませんか?
HTMLから]ボタンをクリックした後、私は正常にAndroidのクラスに取得することができWebAppInterface(例から)と「トースト」のアラートを表示するが、私のウェブに定義されてjavacsript関数にコールバックしようとしていますページが機能しません。これは、AndroidアプリのMainActivityのコードである(Android.html)
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
if (typeof Android != 'undefined')
Android.showToast(toast);
}
function ChangeColor()
{
document.body.style.background = 'pink';
}
</script>
:
これは、Webページのコードです。 URLを読み込んで表示します。
public class MainActivity extends AppCompatActivity {
WebView m_Webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_Webview = (WebView) findViewById(R.id.webview);
WebSettings webSettings = m_Webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
m_Webview.setWebViewClient(new WebViewClient());
m_Webview.loadUrl("android.html");
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this,webView), "Android");
}
}
これは、AndroidアプリのWebAppInterfaceです:
public class WebAppInterface {
Context mContext;
WebView mView;
/** Instantiate the interface and set the context */
WebAppInterface(Context c,WebView w) {
mContext = c;
mView = w;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
mView.loadUrl("javascript:ChangeColor()");
}
}
JavaScript関数トーストが表示取得された後ChangeColorが呼び出さ取得されていません。 https://stackoverflow.com/a/14145116/7751339
ありがとう:複数の基準を参照してください
!キットカットにも
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
// WebView Web = new WebView(mContext);
// mView.getSettings().setUserAgentString("Android WebView");
mView.post(new Runnable() {
public void run() {
mView.loadUrl("javascript:ChangeColor()");
}
});
}
、あなたがevaluateJavascriptを使用する必要が転送: