2012-10-10 2 views
0

문자열을 3+ (2-1) * 2 또는 (28.4/2-1.5) + (4-2)와 같이 평가할 수있는 계산기를 만들고 싶습니다. 나는 웹을 검색하여 JavaScript를 사용할 수있는 WebView를 사용하여 문자열을 평가할 수있는 가능성을 발견했습니다.Android WebView에서 JavaScript evaluate()을 사용하려면 어떻게해야합니까?

WebView에서 JavaScript를 어떻게 사용합니까?

예를 들어 input.getText(). toString()을 JavaScript에 전달하고 값을 되돌릴 수 있습니까?

Java 코드에서 JavaScript의 evaluate()에 액세스하려면 어떻게해야합니까?

자습서 here이 있습니다. WebView에 HTML 파일을로드해야합니까?

답변

-1

당신은 바로 가고 있습니다. onwebFinish 함수에서 webview에 URL을로드 한 후 (onPageFinish 함수에서 완료된 페이지 로딩을 catch 할 수 있습니다.) 다음과 같이 js를 호출합니다.

하지만 먼저이 코드로 webview에 대한 권한을 부여해야합니다 블록 :

settings.setJavaScriptEnabled(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 

    webview.loadUrl("javascript:setPageHeight("+contentHeight+");"); // you can pass param with call js function at loaded page. 
    webview.loadUrl("javascript:alert('test');"); // or you can call like this 

테이크 결과 PARAM를 들어 웹보기에서 JS하면 반드시 이와 같은 서브 클래스 :

그런 다음 정의에 당신의 웹보기에이 줄
class JavaScriptInterface { 
     public void showToast(String msg) { 
      Toast.makeText(mContext, "Received Msg :" + msg,Toast.LENGTH_SHORT).show(); 
     } 
    } 

웹보기 라인

,
webview.addJavascriptInterface(new JavaScriptInterface(), "MyAndroid"); 

마지막으로이 같은 JS에서 HTML에서 자바 함수를 호출 :

<html> 
    <head> 
    <script type="text/javascript"> 
     function sayHello(msg){ 
     //calls Android's JavaScriptInterface Function 
     MyAndroid.showToast(msg); 
     } 
    </script> 
</head> 
<body > 
    <div onclick="sayHello('hello')"> Click Me !! </div> 
</body> 
</html> 
관련 문제