2011-04-26 4 views
2

목표 : JSON 문자열을 가져 와서 Android WebView에있는 JavaScript 함수로 전달하고 싶습니다.WebView 내 JS 함수에 데이터 푸시 시도

내가하고있는 일 : 안드로이드 SQLite 데이터베이스에서 데이터를 가져와 JSON으로 변환하고 브라우저에 전달하고 차트를 사용하여 데이터를 표시해야합니다. 필자는 JSON을 JavaScript 함수/브라우저로 전달하는 방법을 알 수 없다는 점을 제외하고는이 모든 작업을 완료했습니다.

그래서 여기 내 HTML 헤더에 JS 기능이 있습니다

 <script type="text/javascript"> 
      function returnData(json) { 
       //Do something in here with the JSON String 
      } 
     </script> 

그리고 내 자바 나는 내가 JS "returnData"기능을 실행하는 원인이됩니다 자바 스크립트 인터페이스를 가지고있다.

final class DemoJavaScriptInterface { 
     DemoJavaScriptInterface() { 
     } 

     public void clickOnAndroid() { 
      mHandler.post(new Runnable() { 
       public void run() { 
        json = "[{ country: \\\"USA\\\", visits: 4252 },{ country: \\\"China\\\", visits: 1882 },{ country: \\\"Japan\\\", visits: 1809 }]"; 
        mWebView.loadUrl("javascript:returnData("+json+")"); 

       } 
      }); 
     } 
} 

"returnData"함수를 실행하려면 그냥 실행하면됩니다. 나는 시도하고, 그냥 '실패'(아래처럼) 함수에 문자열을 밀어 경우

mWebView.loadUrl("javascript:returnData()"); 

(작품 아래)하지만 ... 불행히도 내가 JS에 많은 경험을 가지고 있지 않으며, 그래서 나는이 JS 함수가 호출되지 않는 이유는 알 수 없습니다.

mWebView.loadUrl("javascript:returnData("+json+")"); 

나는 내가 JS 기능에서 데이터를 얻을 수있는 데이터 (내 생각)을 저장할 수있는 DOM 어딘가에 자바 스크립트 함수에 데이터를 넣거나, 수있는 방법을 찾고 있어요.

감사합니다. 감사드립니다.

답변

3

JSON 문자열 주위에 작은 따옴표를 추가해야했습니다.

mWebView.loadUrl("javascript:returnData('"+json+"')");