लिंकिफ़ एक महान वर्ग है, यह जटिल पैटर्न जैसे यूआरएल, फोन नंबर इत्यादि के लिए शिकार करता है और उन्हें URLSpans में बदल देता है। मौजूदा नियमित अभिव्यक्तियों को दोबारा लिखने के बजाय मैंने URLSpan क्लास को बढ़ाया और केवल को अपग्रेड करने के लिए एक विधि बनाई, एक टेलीफोन URL के लिए एक कस्टम URLSpans एक पुष्टिकरण संवाद के साथ।
पहले मेरी बढ़ाया URLSpan वर्ग, ConfirmSpan:
class ConfirmSpan extends URLSpan {
AlertDialog dialog;
View mView;
public ConfirmSpan(URLSpan span) {
super(span.getURL());
}
@Override
public void onClick(View widget) {
mView = widget;
if(dialog == null) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(widget.getContext());
mBuilder.setMessage("Do you want to call: " + getURL().substring(4) + "?");
mBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
openURL();
}
});
dialog = mBuilder.create();
}
dialog.show();
}
public void openURL() {
super.onClick(mView);
}
}
अगला अलग अवधि कक्षाएं बाहर स्वैप करने के लिए विधि:
private void swapSpans(TextView textView) {
Spannable spannable = (Spannable) textView.getText();
URLSpan[] spans = textView.getUrls();
for(URLSpan span : spans) {
if(span.getURL().toString().startsWith("tel:")) {
spannable.setSpan(new ConfirmSpan(span), spannable.getSpanStart(span), spannable.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.removeSpan(span);
}
}
}
अंत में तुम सब करने की जरूरत है ऑटोलिंक विशेषता के साथ एक टेक्स्ट व्यू बनाएं:
android:autoLink="phone"
और swapSpans()
विधि को कॉल करना याद रखें। समझें कि मैंने इसे मजेदार के लिए लिखा है, ऐसा करने के अन्य तरीके भी हो सकते हैं लेकिन मैं इस समय उनसे अनजान हूं। उम्मीद है की यह मदद करेगा!
एक समाधान ClickableSpan विस्तार करने के लिए लिंक पर क्लिक के अपने स्वयं के कस्टम हैंडलिंग करने के लिए किया जाएगा: http://developer.android.com/reference/android/text/style/ClickableSpan.html यह थ्रेड भी जांचें: http://stackoverflow.com/questions/11413399/open-textview-links-at-another-activity-not- डिफ़ॉल्ट ब्राउज़र – almalkawi