2011-07-29 4 views
1

안드로이드에서 자바에서 자바 스크립트를 호출하는 방법이 있는지 알고 싶습니까? 내 프로그램에서 자바와 자바 스크립트를 함께 사용합니다. TCP 서버에서 응답 (json 데이터)을 받고 파일에 저장하기 위해 java를 사용하고 있습니다. webview에서 나는 그 파일을 검색하고 jQuery 플롯 차트 라이브러리를 사용하여 차트를 그리는 javascript jQuery getJSON() 함수를 사용하고 있습니다. 자, 자바와 자바 스크립트 사이에 관계가 없습니다. 데이터와 파일을 업데이트 할 때마다 draw 기능을 실행하려면 webview에서 버튼을 클릭해야합니다. 나는 프로그램을 영리하고 편리하게하고 싶다. 자바에서 자바 스크립트를 호출하거나 실행하는 방법인가? 편도를 알고 있습니다 :android : 자바 문제에서 자바 스크립트를 호출

Button update = (Button)findViewById(R.id.update); 
     update.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       wv.loadUrl("javascript:document.write('hello')"); 
      } 
     }); 

그러나 문제는 이미 색인 페이지를 loadurl()로 작성한 것입니다.

final WebView wv = (WebView) findViewById(R.id.webkankan); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.loadUrl("file:///android_asset/index.html"); 

이 클릭 이벤트를 발생 시키면 모든 콘텐츠가 "안녕하세요"문자열로 전송됩니다. 또 다른 한가지는 Eclipse 오류를 피하기 위해 webview의 형식을 final로 변경해야하는 이유입니다. 이것이 내 문제를 일으키는 문제인가? 그렇다면 어떻게 해결할 수 있습니까? 양해 해 주셔서 감사합니다. 건배!

답변

1

는 예를 들어 당신이 java에서 저장 한 파일을 읽어 index.html라는 loadData()javascript 방법을 가지고, 당신은 무엇을 할 수 wv.loadUrl("javascript:loadData()");입니다. 실제로 javascript 메서드를 호출하면 해당 메서드에서 파일을 읽을 수 있습니다. 희망이 당신의 문제를 해결합니다.

또는 간단히 말해서. jus이 일을 webView.loadUrl("javascript:jsmethodname()"); 자바에서 자바 스크립트를 실행합니다.

+0

꽤 방법을 이해하지 말자 하기 위해서. 예를 보여 주시겠습니까? – nich

+0

json을 다운로드하고 java를 사용하여 파일에 저장한다고하셨습니다. 그래서 json 다운로드/파일 저장이 완료되면 이것을 할 수 있습니다.'wv.loadUrl ("javascript : getJSON()"); 이것은 매우 간단합니다. – Varun

+0

@Varun 안녕하세요, 귀하의 조언을 시도하지만 여전히 작동하지 않습니다 .. 내 문제를 도와 줄 수 있습니까? 여기에 질문이 있습니다. http://stackoverflow.com/questions/42633793/call-javascript-function-from-android-activity-class –

0

javascript를 실행중인 webview에 자바 객체를 등록하는 자바 스크립트와 통신을 시도 할 수 있습니다.

WebView mWebView = new WebView(mContext); 
//... webview initialization, js enabling etc. 
MyProxyObject obj = new MyProxyObject(); //This object can interchange just basic types, but Strings are basic types 
mWebView.addJavascriptInterface(obj,"myproxyobj"); 

그 코드를 사용하면 객체를해야합니다 자바 스크립트 맥락에서이 무슨 :

웹보기에서 메소드 addJavascriptInterface는 자바 스크립트 범위에 사용할 수있는 자바 객체, 이런 일을 할 수 있습니다 'myproxyobj'는 실제로 자바 객체입니다.

기본 유형 만 교환 할 수 있습니다.

대한 추가 정보는 다음 URL 확인을 위해 :

http://developer.android.com/guide/webapps/webview.html

가 특별히 섹션 확인 : 안드로이드 코드에

건배, 시스코 바인딩 자바 스크립트 코드를

+0

문제가 잘못되었습니다. 그는 자바 스크립트에서 자바를 호출하지 않고 자바에서 자바 스크립트를 호출하려고합니다. –

+0

@ GregRandall 네가 맞아. –

관련 문제