Recognize USSD code in textview in Android -
एक ऐसी गतिविधि है जिसे मैं TextView autoLink विशेषता को सेट करना चाहता हूं >। इसके अलावा, मैं यूएसएसडी कोड को * 140 * 7 # की तरह पहचानना चाहता हूं और उस पर कार्य करना चाहता हूं जैसे फ़ोन नंबर, वेबसाइट यूआरएल, ईमेल पता जैसे इसे छुआ है। > [सूचना] सामान्य तौर पर, मैं एक अनुकूलित टेक्स्टदृश्य का उपयोग करना चाहूंगा जो यूएसएसडी कोड भी पहचान सकता है। मैं googling गया है, लेकिन मैं एक उपयुक्त समाधान नहीं मिल सका। अंत में, मैं अपने अनुरोध का समाधान पा सकते हैं। @ बंसान_माथारू टिप्पणी पर उल्लेखित होने के साथ-साथ, मैं एक टेक्स्ट वी्यूई तत्व हूं जिसे आप नीचे कोड में देख सकते हैं: यूएसएसडी कोड जैसे किसी भी पैटर्न को पहचानने के लिए इस कक्षा ओवरराइड सेट टेक्स्ट () विधि में TextLinkClickListener नामक एक इंटरफ़ेस है जो हमें कॉल करने में मदद करता है यूएसएसडी कोड : टेक्स्टव्यू के बजाय कस्टम वर्ग का उपयोग करें: और आपकी गतिविधि में (उदाहरण के लिए): हर जगह आप यूएसएसडी कोड को कॉल करना चाहते हैं, आपको नीचे कोड लिखना चाहिए और LinkEnabledTextView श्रोता कॉल करें: ओह, ध्यान रखें कि मेनिफ़ेस्ट फ़ाइल में कॉल परमिटिस लिखें:
सार्वजनिक वर्ग LinkEnabledTextView TextView का विस्तार करता है {// टेक्स्ट से * 140 * 1 # एकत्र करने के लिए पैटर्न पैटर्न ussdPattern = Pattern.compile ("(\\ * [0-9] + [\\ * [0-9] +] * #)"); निजी टेक्स्टलिंकक्लिकलिस्ट एमएलएस; निजी अर्रेलिस्ट & lt; हाइपरलिंक & gt; listOfLinks; सार्वजनिक लिंकइनेटेडटेक्स्टव्यू (संदर्भ संदर्भ, AttributeSet attrs) {सुपर (संदर्भ, attrs); ListOfLinks = नया अर्रेलिस्ट & lt; हाइपरलिंक & gt; (); } सार्वजनिक शून्य सेट पाठ (स्ट्रिंग पाठ) {स्पॅनलेबल स्ट्रिंग लिंक करने योग्य टेक्स्ट = नया स्पॅनलेबल स्ट्रिंग (टेक्स्ट); इकट्ठा लिंक (सूचीऑफ़ लिंक, लिंक करने योग्य टेक्स्ट, यूएसएसडीपार्टर्न); (हाइपरलिंक लिंकः एसईपीईसी: सूचीऑफ़ लिंक्स) के लिए {// यह प्रक्रिया यहां से लिंक करने योग्य लिंक्स को लिंक करने योग्य text.setSpan (linkSpec.span, linkSpec.start, linkSpec.end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) से बनाता है; } // टेक्स्ट लिंक्स के लिए पाठ को सक्षम लिंक के साथ सुपर सेट। टेक्स्ट (लिंक करने योग्य टेक्स्ट) सेट करता है; } सार्वजनिक शून्य सेटऑनटेक्स्टलिंकक्लिकलाइज़र (टेक्स्टलिंकक्लिकलिस्टनईलाइस्टर) {mListener = newListener; } निजी शून्य इकट्ठा लिंक्स (ऐरे लिस्ट और लेफ्टिनेंट; हाइपरलिंक & gt; लिंक, स्पैनेबल, पैटर्न पैटर्न) {मैटर एम = पैटर्न। मेटचर (एस); जबकि (m.find ()) {int start = m.start (); Int end = m.end (); हाइपरलिंक कल्पना = नया हाइपरलिंक (); Spec.textSpan = s.subSequence (प्रारंभ, अंत); Spec.span = नया इंटरनललर्टस्पेन (spec.textSpan.toString ()); Spec.start = start; Spec.end = अंत; links.add (कल्पना); }} सार्वजनिक इंटरफ़ेस TextLinkClickListener {सार्वजनिक शून्य onTextLinkClick (देखें textView, स्ट्रिंग क्लिक किए गए स्ट्रिंग); } / ** * लिंक स्थान के बारे में जानकारी संग्रह करने के लिए कक्षा * / सार्वजनिक कक्षा InternalURLSpan ClickableSpan विस्तारित {निजी स्ट्रिंग क्लिक किया गया; सार्वजनिक आंतरिकरुपस्पेन (स्ट्रिंग क्लिक किए गए स्ट्रिंग) {क्लिक किया गयापन = क्लिक किया स्ट्रिंग; } @ ओवरराइड सार्वजनिक शून्य पर क्लिक करें (देखें textView) {mListener.onTextLinkClick (textView, क्लिक कियास्पैन); }} वर्ग हाइपरलिंक {चार सहिष्णुता पाठस्पैन; आंतरिक URL स्पैन अवधि; Int प्रारंभ; इरादा करना; }}
सार्वजनिक इंटरफ़ेस TextLinkClickListener {सार्वजनिक void onTextLinkClick (देखें textView , स्ट्रिंग क्लिक किए गए स्ट्रिंग); }
& lt; com.example.test.custom_textview.LinkEnabledTextView एंड्रॉइड: id = "@ + id / txtMessage "Android: layout_width =" fill_parent "android: layout_height =" wrap_content "एंड्रॉइड: textSize =" 18sp "एंड्रॉइड: textColor =" @ एंड्रॉइड: रंग / काला "एंड्रॉइड: autoLink =" all "/ & gt;
लिंकइनेटेड पाठ View textView = (LinkEnabledTextView) findViewById (R.id.txtMessage); textView.setOnTextLinkClickListener (this); textView.setText (पाठ);
public void onTextLinkClick ( देखें टेक्स्टव्यू, स्ट्रिंग क्लिक किए गए स्ट्रिंग) {स्ट्रिंग यूएसएसडीकोड = क्लिक किए गए स्ट्रिंग.substring (0, क्लिक किया गया String.indexOf ("#")) + Uri.encode ("#"); शुरुआती (नया आशय (आशय। एक्शन_कॉल, उरी.परसे ("टेलि:" + यूएसएसडीकोड))); }
& lt; उपयोग-अनुमति एंड्रॉइड: name = "android.permission.CALL_PHONE" / & gt;
Comments
Post a Comment