的WebView addJavascriptInterface功能与参数 [英] WebView addJavascriptInterface function with Parameters

查看:129
本文介绍了的WebView addJavascriptInterface功能与参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我添加了一个JavaScript接口的WebView。

我能够使用所有它没有参数的函数。

但是,当我给了从JavaScript的参数。该函数不调用web视图。

请参阅code

Javascript的

 函数getCellString(行,列){
            返回Report.getCellString(行,列);
        }
 

的WebView

  webView.addJavascriptInterface(新JavaScriptInterface(),报告);
 

Java脚本接口

 公共类JavaScriptInterface
{
公共字符串getCellString(INT行,诠释列)
{
    返回行+,+柱;
}
}
 

我不知道是否因为字符串返回类型或函数参数。

EDITED

我试着getCellString没有给出参数()仍是不被调用。

这意味着问题是返回类型。我给字符串返回类型,是不是原始数据类型。

任何一个可以告诉我,我应该给到位字符串的数据类型,使其接受。

addJavaScriptInterface后LogCat中

  03-17 17:52:26.748:V / WebCore的(19908):ADD_JS_INTERFACE ARG1 = 0 ARG2 = 0 obj=android.webkit.WebViewCore$JSInterfaceData@44dfe378
03-17 17:52:26.858:V / WebCore的(19908):LOAD_URL ARG1 = 0 ARG2 = 0 obj=android.webkit.WebViewCore$GetUrlData@44dff760
03-17 17:52:26.858:V / WebCore的(19908):核心使用loadURL文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.858:V / WebKit的(19908):startLoadingResource:URL =文件:///data/data/mypackage/cache/html_report/ReportHTML.html,方法= GET,POSTDATA = NULL,isMainFramePage =真,mainResource = TRUE,userGesture =真
03-17 17:52:26.858:V / WebKit的(19908):LoadListener构造URL =文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.868:V /的WebView(19908):WEBCORE_INITIALIZED_MSG_ID
03-17 17:52:26.868:V / WebKit的(19908):LoadListener:来自:文件:///data/data/mypackage/cache/html_report/ReportHTML.html主要:1次要的:1 code:200原因:OK
03-17 17:52:26.878:V / WebKit的(19908):LoadListener.headers
03-17 17:52:26.878:V / WebCore的(19908):200 ARG1 = 0 ARG2 = 0的obj = NULL
03-17 17:52:26.878:V / WebKit的(19908):LoadListener.data():url:文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.878:V / WebKit的(19908):LoadListener.data():url:文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.888:V / WebKit的(19908):LoadListener.endData():url:文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.898:V / WebKit的(19908):guessMimeTypeFromExtension:URL =文件:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.908:V /的WebView(19908):sendOurVisibleRect =(0.55,R = 240,B = 320
03-17 17:52:26.908:V /的WebView(19908):setCertificate = NULL
03-17 17:52:26.988:V / WebKit的(19908):LoadListener.detachRequestHandle():requestHandle:空
03-17 17:52:27.098:V /的WebView(19908):SET_SCROLLBAR_​​MODES
03-17 17:52:27.098:V /的WebView(19908):SET_SCROLLBAR_​​MODES
03-17 17:52:27.098:V /的WebView(19908):SET_SCROLLBAR_​​MODES
03-17 17:52:27.098:V / WebCore的(19908):didFirstLayout standardLoad =真
03-17 17:52:27.108:V /了webcore(19908):SET_SCROLL_OFFSET的arg1 = 0 ARG2 = 0物镜=点(0,0)
03-17 17:52:27.108:V /的WebView(19908):UPDATE_TEXT_ENTRY_MSG_ID
03-17 17:52:27.108:V / WebCore的(19908):SET_GLOBAL_BOUNDS ARG1 = 0 ARG2 = 0的obj =矩形(0,55  -  240,320)
03-17 17:52:27.118:V / WebCore的(19908):VIEW_SIZE_CHANGED ARG1 = 0 ARG2 = 0 obj=android.webkit.WebView$ViewSizeData@44d1d2c8
03-17 17:52:27.118:V / WebCore的(19908):viewSizeChanged W = 313; H = 353; textwrapWidth = 313;规模= 0.75
03-17 17:52:27.118:V / WebCore的(19908):viewSizeChanged
03-17 17:52:27.118:V / WebCore的(19908):SET_ACTIVE ARG1 = 0 ARG2 = 0的obj = NULL
03-17 17:52:27.128:V / WebCore的(19908):WEBKIT_DRAW ARG1 = 0 ARG2 = 0的obj = NULL
03-17 17:52:27.128:V / WebCore的(19908):webkitDraw启动
03-17 17:52:27.128:V / WebCore的(19908):webkitDraw NEW_PICTURE_MSG_ID
03-17 17:52:27.128:V / WebCore的(19908):UPDATE_CACHE_AND_TEXT_ENTRY ARG1 = 0 ARG2 = 0的obj = NULL
03-17 17:52:27.128:V /的WebView(19908):NEW_PICTURE_MSG_ID
03-17 17:52:27.128:V /的WebView(19908):NEW_PICTURE_MSG_ID {0,0,313,353}
03-17 17:52:27.128:V /的WebView(19908):UPDATE_TEXT_ENTRY_MSG_ID
03-17 17:53:28.266:V / websync(19908):*** WebSyncManager同步***
03-17 17:53:28.266:V / websync(19908):CookieSyncManager :: syncFromRamToFlash STARTS
03-17 17:53:28.268:V / websync(19908):CookieSyncManager :: syncFromRamToFlash DONE
 

解决方案

如果您更改 INT 方法的参数,以字符串则函数应该是从的WebView 中调用:

 公共字符串getCellString(行字符串,字符串列)
{
    返回行+,+柱;
}
 

I have added a JavaScript Interface to WebView.

I am able to use all the Functions which has no Parameters.

But When i gave the Parameter from JavaScript. The function are not called by WebView.

See Code

Javascript

        function getCellString(row, column) {
            return Report.getCellString(row,column);
        }

WebView

webView.addJavascriptInterface(new JavaScriptInterface(), "Report");

Javascript Interface

public class JavaScriptInterface
{
public String getCellString(int row, int column)
{
    return row + "," + column;
}
}

I am not sure whether it because String return type or the parameter for the function.

EDITED

I tried giving no Parameters to the getCellString() Still it is not being called.

That means problem is with return type. I gave the String return type which is not primitive data type.

Can any one tell me what Data Type should i give in place of String so that it accepts.

LogCat after addJavaScriptInterface

   03-17 17:52:26.748: V/webcore(19908): ADD_JS_INTERFACE arg1=0 arg2=0 obj=android.webkit.WebViewCore$JSInterfaceData@44dfe378
03-17 17:52:26.858: V/webcore(19908): LOAD_URL arg1=0 arg2=0 obj=android.webkit.WebViewCore$GetUrlData@44dff760
03-17 17:52:26.858: V/webcore(19908):  CORE loadUrl file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.858: V/webkit(19908): startLoadingResource: url=file:///data/data/mypackage/cache/html_report/ReportHTML.html, method=GET, postData=null, isMainFramePage=true, mainResource=true, userGesture=true
03-17 17:52:26.858: V/webkit(19908): LoadListener constructor url=file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.868: V/webview(19908): WEBCORE_INITIALIZED_MSG_ID
03-17 17:52:26.868: V/webkit(19908): LoadListener: from: file:///data/data/mypackage/cache/html_report/ReportHTML.html major: 1 minor: 1 code: 200 reason: OK
03-17 17:52:26.878: V/webkit(19908): LoadListener.headers
03-17 17:52:26.878: V/webcore(19908): 200 arg1=0 arg2=0 obj=null
03-17 17:52:26.878: V/webkit(19908): LoadListener.data(): url: file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.878: V/webkit(19908): LoadListener.data(): url: file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.888: V/webkit(19908): LoadListener.endData(): url: file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.898: V/webkit(19908): guessMimeTypeFromExtension: url = file:///data/data/mypackage/cache/html_report/ReportHTML.html
03-17 17:52:26.908: V/webview(19908): sendOurVisibleRect=(0,55,r=240,b=320
03-17 17:52:26.908: V/webview(19908): setCertificate=null
03-17 17:52:26.988: V/webkit(19908): LoadListener.detachRequestHandle(): requestHandle: null
03-17 17:52:27.098: V/webview(19908): SET_SCROLLBAR_MODES
03-17 17:52:27.098: V/webview(19908): SET_SCROLLBAR_MODES
03-17 17:52:27.098: V/webview(19908): SET_SCROLLBAR_MODES
03-17 17:52:27.098: V/webcore(19908): didFirstLayout standardLoad =true
03-17 17:52:27.108: V/webcore(19908): SET_SCROLL_OFFSET arg1=0 arg2=0 obj=Point(0, 0)
03-17 17:52:27.108: V/webview(19908): UPDATE_TEXT_ENTRY_MSG_ID
03-17 17:52:27.108: V/webcore(19908): SET_GLOBAL_BOUNDS arg1=0 arg2=0 obj=Rect(0, 55 - 240, 320)
03-17 17:52:27.118: V/webcore(19908): VIEW_SIZE_CHANGED arg1=0 arg2=0 obj=android.webkit.WebView$ViewSizeData@44d1d2c8
03-17 17:52:27.118: V/webcore(19908): viewSizeChanged w=313; h=353; textwrapWidth=313; scale=0.75
03-17 17:52:27.118: V/webcore(19908): viewSizeChanged
03-17 17:52:27.118: V/webcore(19908): SET_ACTIVE arg1=0 arg2=0 obj=null
03-17 17:52:27.128: V/webcore(19908): WEBKIT_DRAW arg1=0 arg2=0 obj=null
03-17 17:52:27.128: V/webcore(19908): webkitDraw start
03-17 17:52:27.128: V/webcore(19908): webkitDraw NEW_PICTURE_MSG_ID
03-17 17:52:27.128: V/webcore(19908): UPDATE_CACHE_AND_TEXT_ENTRY arg1=0 arg2=0 obj=null
03-17 17:52:27.128: V/webview(19908): NEW_PICTURE_MSG_ID
03-17 17:52:27.128: V/webview(19908): NEW_PICTURE_MSG_ID {0,0,313,353}
03-17 17:52:27.128: V/webview(19908): UPDATE_TEXT_ENTRY_MSG_ID
03-17 17:53:28.266: V/websync(19908): *** WebSyncManager sync ***
03-17 17:53:28.266: V/websync(19908): CookieSyncManager::syncFromRamToFlash STARTS
03-17 17:53:28.268: V/websync(19908): CookieSyncManager::syncFromRamToFlash DONE

解决方案

If you change the method parameters from int to String then the function should be callable from within the WebView:

public String getCellString(String row, String column)
{
    return row + "," + column;
}

这篇关于的WebView addJavascriptInterface功能与参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆