我从原生android活动向一个JS函数传递一个值,但该函数没有被调用
java方法
public void Jmethod()
{
//index is the WebView
index.loadUrl("javascript: window.SetImage("+selectedImagePath+");");
}
JS功能
function SetImage(ImgPath)
{
alert('this function called');
}
这就是LogCat所说的
03-31 12:27:23.668: D/webview(30574): blockWebkitViewMessage= false
03-31 12:27:24.483: W/IInputConnectionWrapper(30574): showStatusIcon on inactive InputConnection
03-31 12:27:24.493: D/chromium(30574): Unknown chromium error: -6
03-31 12:27:27.438: D/WebView(30574): loadUrlImpl: called
03-31 12:27:27.438: D/webcore(30574): CORE loadUrl: called
03-31 12:27:27.438: D/webkit(30574): Firewall not null
03-31 12:27:27.438: D/webkit(30574): euler: isUrlBlocked = false
我从webview成功调用了java函数,但是这个东西不能正常工作,请告诉我哪里错了..
答案 0 :(得分:0)
你启用了JavaScript吗?
myWebView.getSettings().setJavaScriptEnabled(true);
您可能还想删除javascript和window.SetImage之间的空格。
答案 1 :(得分:0)
当你说javascript函数没有被调用时,你的意思是,或者你的意思是没有显示警告对话框?
如果是后者,则需要在WebView上设置默认的WebChromeClient以显示UI。
myWebView.setWebChromeClient(new WebChromeClient());
答案 2 :(得分:0)
我在本地测试过,它对我有用。我希望你能从中得到一些想法:)
//爪哇
final String image = "image url";
index.getSettings().setJavaScriptEnabled(true);
index.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//make sure to put the single quote inside argument.
view.loadUrl("javascript:window.SetImage('" + image + "')");
}
});
index.setWebChromeClient(new WebChromeClient());
index.loadUrl("file:///android_asset/index.html");
//此函数将在index.html
中function SetImage(imageUrl)
{
alert(imageUrl);
}
答案 3 :(得分:0)
问题只是这些''...... 它通过添加
工作得很好index.loadUrl( “JavaScript的:SetImage( ' ”+ selectedImagePath +“')”);