从Android Activity返回一个字符串到JS函数

时间:2014-03-31 07:13:14

标签: javascript android android-webview

我从原生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函数,但是这个东西不能正常工作,请告诉我哪里错了..

4 个答案:

答案 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 +“')”);