我必须在android中创建我们的应用程序。
所以我所做的就是,只需在 res 下创建原始文件夹,然后将html文件放在那里。
一切正常,但当我点击一个放在该网页内的按钮时,没有任何反应,并且点击事件无法正常工作。
这是我的代码。
newfile.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form>
<input type="button" value="Click me" onclick="openDialog()">
<script>
function openDialog()
{
alert("ok");
}
</script>
</form>
</body>
</html>
这是我的java代码,
webview.loadData(readTextFromResource(R.raw.newfile),"text/html", "utf-8");
readTextFromResource函数
private String readTextFromResource(int resourceID)
{
InputStream raw = getResources().openRawResource(resourceID);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
int i;
try
{
i = raw.read();
while (i != -1)
{
stream.write(i);
i = raw.read();
}
raw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return stream.toString();
}
请指出为什么点击事件不起作用!
答案 0 :(得分:7)
我正在使用phonegap做这类事情。如果要调用本机函数,请使用启用了Java脚本的Web视图。我在我的MainActivity中扩展了DroidGap,在 assets 文件夹下扩展了我的Login.html文件 在您的Main Activity.java中,
WebView webView=new WebView(this);
webview.loadUrl("file:///android_asset/www/Phone/Login.html");
setContentView(webView);
无论如何,如果问题没有解决,请尝试添加此(onCreate方法中的所有代码)
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setSaveFormData(true);
webView.getSettings().setAllowContentAccess(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
webView.getSettings().setSupportZoom(true);
webView.setWebViewClient(new WebViewClient());
webView.setClickable(true);
webView.setWebChromeClient(new WebChromeClient());
如果您想了解更多关于如何通过网页here is the link
访问Android原生代码的信息答案 1 :(得分:0)
当 WebView
不响应按钮时,您可以在移动浏览器或桌面浏览器中以最小宽度(自适应布局)测试网页。当您单击它时,您将看到该按钮是如何工作的。然后您可以按 F12 并查看在“网络”选项卡中发送的查询。
(如果你按下Ctrl+Shift+C,你会看到页面的布局,然后可以点击一个元素(按钮)并查看代码。)
如果按钮显示图片对话框(拍照、上传图片),您应该使用 onShowFileChooser
([1])。
val startActivityForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult ->
//
}
@SuppressLint("SetJavaScriptEnabled")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
with(webview) {
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.domStorageEnabled = true
// webViewClient = MyWebViewClient()
webChromeClient = MyWebChromeClient()
}
}
private class MyWebChromeClient : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView?,
filePathCallback: ValueCallback<Array<Uri>>?,
fileChooserParams: FileChooserParams?
): Boolean {
// Check permissions, create intent.
startActivityForResult.launch(chooserIntent)
return true
}
}
如果您有 JavaScript 按钮,您可以附加 JavaScript 接口e ([1], [2], [3]):
@SuppressLint("SetJavaScriptEnabled")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
with(webview) {
settings.javaScriptEnabled = true
settings.javaScriptCanOpenWindowsAutomatically = true
settings.domStorageEnabled = true
// WebView.setWebContentsDebuggingEnabled(BuildConfig.TEST)
addJavascriptInterface(
JsHandle(this@WebViewFragment),
"Android"
)
}
}
class JsHandle(private var fragment: WebViewFragment) {
@JavascriptInterface
fun notify(notify: String) {
//
}
}
您的网页应该包含 javascript:
。