में गैर-अंग्रेज़ी वर्णों को इंजेक्शन देना मैं रिमोट कंट्रोल ऐप पर प्रोग्रामिंग कर रहा हूं। कार्यों में से एक अक्षर अक्षर इंजेक्शन है। कोड मैं वर्तमान में इस तरह दिखता उपयोग कर रहा हूँ:एंड्रॉइड
Instrumentation instr = new Instrumentation();
String str="a";
// basically the same like calling instr.sendStringSync(str);
char[] chars = str.toCharArray();
KeyCharacterMap keyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);
KeyEvent[] keyEvents = keyCharacterMap.getEvents(chars);
if (keyEvents != null) {
for (KeyEvent kev : keyEvents) {
instr.sendKeySync(kev);
}
}
कि अंग्रेजी अक्षर पर पूरी तरह से काम करता है (अक्षर EditText बॉक्स में दिखाई)। हालांकि, अगर मैं इंजेक्ट करने की कोशिश कर रहा हूं उदा। कोरियाई पात्र, यह विफल रहता है। जब मैं कोरियाई भाषा और कीबोर्ड कॉन्फ़िगर करता हूं तब भी फ़ंक्शन प्राप्त होता है।
मुझे पता है कि सीधे तार इंजेक्शन लगाने के लिए एक और तरीका है:
KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(), str, 0, 0);
instr.sendKeySync(event);
यह नहीं है काम कर रहा है या तो - कोई EditText बॉक्स में दिखाया गया वर्ण, और onKeyMultiple() या तो अपने परीक्षण गतिविधि में नहीं बुलाया जाता है।
यह अजीब है, क्योंकि dispatchKeyEvent() एक ही घटना के साथ अपने परीक्षण गतिविधि में काम करता है:
KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(), str, 0, 0);
dispatchKeyEvent(event);
मेरे रिमोट कंट्रोल एप्लिकेशन जो गतिविधि के लिए घटनाओं कोई फर्क नहीं पड़ता इंजेक्षन की जरूरत है। यह इंस्ट्रुमेंटेशन (android.permission.INJECT_EVENTS
और प्लेटफार्म कुंजी के साथ एक हस्ताक्षर के साथ) का उपयोग कर संभव है।
मैं इंस्ट्रूमेंटेशन का उपयोग करके गैर-अंग्रेज़ी वर्ण कैसे इंजेक्ट कर सकता हूं? क्या इसे पूरा करने का कोई और तरीका है? जैसे DispatchKeyEvent का उपयोग करना (अन्य गतिविधियों/ऐप्स के लिए भी काम करना है)।
मुझे इस समय एक ही समस्या है। कोई विचार किसी को भी? – Sprigg
यह मानते हुए कि 'm_KeyCharacterMap' वास्तव में' keyCharacterMap' है? –
आप सही हैं। मैंने कोड को सही किया। – kahlk