在Android开发中,注入JavaScript通常是指在WebView组件中执行JavaScript代码。WebView是Android提供的一个组件,它允许在应用程序中嵌入网页内容。通过WebView,开发者可以加载HTML、CSS和JavaScript,从而实现复杂的用户界面和交互功能。
基础概念:
优势:
类型:
<script src="..."></script>
引入的外部JavaScript文件。应用场景:
常见问题及解决方法:
addJavascriptInterface()
暴露Java方法时,需要注意安全性,避免注入攻击。解决方法是使用@JavascriptInterface
注解,并确保只在可信内容中使用。示例代码:
// 创建一个JavaScript接口类
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();
}
}
// 在Activity中设置WebView
WebView webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl("file:///android_asset/index.html");
// 在HTML中调用Android方法
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
在上面的示例中,我们创建了一个名为WebAppInterface
的类,它有一个可以被JavaScript调用的方法showToast
。然后我们在Activity中启用了WebView的JavaScript支持,并通过addJavascriptInterface()
方法将WebAppInterface
实例暴露给JavaScript。最后,在HTML页面中,我们可以通过调用Android.showToast()
来触发Android端的showToast
方法。