मैं अंदर चल रहे पृष्ठ javascriptमें बैठे कुछ फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं । एंड्रॉइड ऐप से कोड को नीचे करने की कोशिश करने में बहुत सरल है - एक परीक्षण संदेश के साथ एक फ़ंक्शन को कॉल करें , जो टोस्ट के माध्यम से परीक्षण संदेश प्रदर्शित करने वाले एंड्रॉइड ऐप में एक जावा फ़ंक्शन को वापस कॉल करता है।htmlandroid webviewjavascript
javascriptसमारोह लगता है कि:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
WebView से, मैंने javascriptनिम्नलिखित तरीकों को बिना किसी भाग्य के कॉल करने की कोशिश की है :
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
मैंने सक्षम javascriptकियाWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
और विधर्मियों का Javaवर्ग
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
मैंने यह देखने के लिए बहुत समय बिताया है कि मैं क्या गलत कर सकता हूं। सभी उदाहरण मैंने पाया है कि इस दृष्टिकोण का उपयोग करें। क्या किसी को यहाँ कुछ गलत दिखाई देता है?
संपादित करें: कई अन्य बाहरी javascriptफाइलें संदर्भित या उपयोग की जा रही हैं html, क्या वे समस्या हो सकती हैं?
@JavascriptInterfaceजावा विधियों पर डेकोरेटर का उपयोग करना होगा जिसे आप जावास्क्रिप्ट इंटरफ़ेस के माध्यम से वेब व्यू को उपलब्ध कराना चाहते हैं।
myWebView.loadUrl("javascript:testEcho('Hello World!')");मैं समझता हूं कि आपने पहले ही html फाइल को उस वेबव्यू में संलग्न कर लिया है। क्या आप मुझे बता सकते हैं कि आपने ऐसा कैसे किया?