ऐसा करने का सबसे आसान तरीका प्लगइन या जावास्क्रिप्ट इंटरफेस में जावास्क्रिप्ट कॉल संग्रहीत करना है और इसे अपने जावास्क्रिप्ट पक्ष में निष्पादित करने की विधि दोहराना है। इस तरह loadUrl
कभी नहीं कहा जाता है।
कुछ की तरह:
StringBuilder sb = null;
private final Object LOCK = new Object();
public void sendJavascript(String js){
synchronized(LOCK) {
if (sb == null){
sb = new StringBuilder();
sb.append("javascript:");
}
sb.append(js):
}
}
फिर एक javascriptInterface का उपयोग कर:
private class JsInterface {
@JavascriptInterface
public String getJavascript(){
synchronized(LOCK) {
String javascriptToRun = sb.toString();
sb = new StringBuilder();
sb.append("javascript:");
return javascriptToRun;
}
}
}
अपने वेब दृश्य करने के लिए अपने जावास्क्रिप्ट इंटरफ़ेस जोड़ें:
JsInterface jsInterface = new JavascriptInterface();
webview.addJavascriptInterface(jsInterface, "JsInterface");
और अपने जावास्क्रिप्ट कोड पर एक समय अंतराल सेट संग्रहित फ़ंक्शन को पुनर्प्राप्त करने के लिए।
संपादित
मैं सिर्फ this answer पाया, यह पता चलता मेरा एक बड़ी समस्या है, तरीकों सिंक्रनाइज़ नहीं कर रहे हैं। मतलब जब आप getJavascript()
पर कॉल करते हैं तो हमारे चर sb
अभी तक पढ़ने के लिए तैयार नहीं हो सकते हैं। मैंने उपर्युक्त स्रोत में प्रासंगिक बिट जोड़ा है।
का प्रयोग करें ताले या अपने कोड अविश्वसनीय हो जाएगा
Maby एक गंदा समाधान, आप दिखाई दे सकता है (यह गूगल) "शक्ति" के लिए कीबोर्ड की कोशिश या कीबोर्ड राज्य की जांच कर सकता है, और अगर राज्य है "दिखाई नहीं दे रहा है" आप कीबोर्ड को दृश्यमान सेट कर सकते हैं। पता नहीं है कि यह काम करता है, सिर्फ एक विचार है। – Mdlc