我正在尝试这里的例子:https://developer.android.com/guide/webapps/webview.html但它只是没有工作。
这是我的Activity
:
public class MainActivity extends Activity {
private static final String TAG = "browser";
protected WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView)findViewById(R.id.wvBrowser);
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
wv.addJavascriptInterface(new WebAppInterface(this), "android");
wv.loadUrl("http://192.168.3.183");
}
}
这是WebAppInterface
:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
,最后是Javascript:
<html>
<head>
<title>Android JavaScript Scan Test</title>
</head>
<body>
<h3>Scan Test</h3>
<input id="barcode">
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
f = 0;
function showAndroidToast(toast) {
document.getElementById("barcode").value = typeof(Android) + (f++);
Android.showToast(toast);
}
</script>
</body>
</html>
它给我的全部内容是undefined0
,undefined1
等。显然,我的Android
中无法使用WebView
对象。
我错过了什么吗?
答案 0 :(得分:2)
您已使用android
注册回调,并尝试使用大写字母Android
。
要使Javascript界面正常工作,名称必须相同。目前Android文档示例中存在一个错误