2012-03-17 2 views
0

Я добавил интерфейс JavaScript в WebView.WebView addJavascriptInterface функция с параметрами

Я могу использовать все Функции, у которых нет параметров.

Но когда я дал параметр из JavaScript. WebView не вызывается функцией.

См Код

Javascript

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

WebView

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

Javascript Интерфейс

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

Я не уверен, является ли это потому, что строка возвращаемый тип или т он параметр для функции.

EDITED

Я попытался не подавая никаких параметров в getCellString() Тем не менее это не называется.

Это означает, что проблема есть с возвратом типа. Я дал тип возврата String, который не является примитивным типом данных.

Может ли кто-нибудь сказать мне, какой тип данных я должен указывать вместо String, чтобы он принимал.

LogCat после addJavaScriptInterface

03-17 17:52:26.748: V/webcore(19908): ADD_JS_INTERFACE arg1=0 arg2=0 [email protected] 
03-17 17:52:26.858: V/webcore(19908): LOAD_URL arg1=0 arg2=0 [email protected] 
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 [email protected] 
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 
+0

ли '' row' и column' целое значения в вашем JavaScript-коде? Вы видите сообщения в LogCat? Возврат 'String' не представляет проблемы - у меня есть пример кода, который делает это. – CommonsWare

+0

Если у вас есть пример кода для String, пожалуйста, дайте в решении. –

+0

Этот каталог содержит пару проектов, которые используют 'addJavaScriptInterface()': https://github.com/commonsguy/cw-advandroid/tree/master/WebView – CommonsWare

ответ

2

При изменении параметров метода от int к String то функция должна быть отозваны внутри WebView:

public String getCellString(String row, String column) 
{ 
    return row + "," + column; 
} 
Смежные вопросы