cordova/phonegap webview에서 네이티브 함수를 호출하는 방법 (예 : 광고 게재).cordova에서 네이티브 함수를 호출하는 방법 3.x
편집 : 나는 FUNALLY 그것을 가지고 내가 그 (당신의 일생 2 일 여유 : D)을 수행하는 방법을 모르는 당신의 모두를위한 몇 가지 단계 쓸거야 OK
A)를 만약 당신이 cordova/phonegap을 가지고 있고 js에서 전화하고 싶다면 :
1) 다음 코드를 기존 DroidGap 활동으로 대체하십시오.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init(); // Calling this is necessary to make this work
appView.addJavascriptInterface(this, "MainActivity");
/* "this" points the to the object of the current activity. "MainActivity" is used to refer "this" object in JavaScript as in Step 3. */
super.loadUrl("file:///android_asset/www/index.html");
}
2) 현재 (this) 활동에 다음과 같이 사용자 정의 함수를 추가하십시오.
@JavascriptInterface
public void customFunctionCalled() {
Log.e("Custom Function Called", "Custom Function Called");
}
3) 이제이 기능을 HTML/JavaScript 코드에서 다음과 같이 호출하십시오. 당신은 웹보기에서 구현 코르도바/폰갭을 가지고 JS에서 호출하고자하는 경우
window.MainActivity.customFunctionCalled();
B.1)이 수행 를 (그리고)
1) 일반 함수를 호출 메인이 추가하려면 자바 파일 :
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
@JavascriptInterface
public void showLog(){
Log.v("blah", "blah blah");
}
}
:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
2) 클래스 JavaScriptInterface 선언3) js에서 window.JSInterface.showLog();로 호출한다.
B.2)는 웹뷰에서 구현 코르도바/폰갭을 가지고 (JS에서 호출 할과) 토스트처럼, UI 함수를 호출 할이 작업을 수행 할 경우 :
1) 메인이 추가 자바 파일 :
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
@JavascriptInterface
public void myFunction()
{
activity.runOnUiThread(new Runnable() {
public void run() {
//Code that interact with UI
showToast();
}
});
}
}
3) 아래에 토스트 기능 추가 :
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
2) 클래스 JavaScriptInterface 선언
public void showToast(){
Toast.makeText(getApplicationContext(), "this is my Toast message!!! =)",
Toast.LENGTH_LONG).show();
}
4)`window.JSInterface.myFunction();
UI를 사용하는 함수가 필요한 경우 activity.runOnUiThread에 함수를 래핑하여 js에서 호출 할 수 있도록해야합니다. 당신이 자바에서 호출 할 경우
* JQuery와 방법은이 작업을 수행 :
자바 :
cordova_webview.loadUrl("javascript:window.functionn()");
자바 스크립트 :
window.function = punish;
이 좋은 하루 되세요!
super.init()를 사용할 수 없기 때문에 pgonegap을 webview에 통합했습니다. 선을 추가하면 오류가 발생하며 앱을 빌드 할 수 없습니다. –
무엇이 오류입니까? –