獲取TextView中的url並設置點擊事件


調用安卓默認的瀏覽器方法:

Intent intent = new Intent(Intent.ACTION_VIEW);

System.out.println("跳轉到百度");
intent.setData(Uri.parse("http://www.baidu.com"));
// intent.setPackage("com.mx.browser");     intent.setPackage("com.uc.browser");   添加這一句是為了調用手機中的其他瀏覽器,前提是手機中安裝了這些瀏覽器如遨游,uc等)

startActivity(intent);
如果獲取textview中的url並設置點擊事件,則按如下步驟:

1,textview的xml中添加    : android:autoLink="web" //或者all,根據需要

2,實現方法:(從網上摘抄)

private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,
final URLSpan urlSpan) {
int start = clickableHtmlBuilder.getSpanStart(urlSpan);
int end = clickableHtmlBuilder.getSpanEnd(urlSpan);
int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);
ClickableSpan clickableSpan = new ClickableSpan() {
    public void onClick(View view) {      //在這里添加點擊事件
//Do something with URL here.
Log.i("LOG", "onClick url=" + urlSpan.getURL() );
Intent intent = new Intent(Intent.ACTION_VIEW);
System.out.println("點擊的url:"+urlSpan.getURL());
intent.setData(Uri.parse(urlSpan.getURL()));       //使用默認瀏覽器打開url
// intent.setData(Uri.parse("www.baidu.com"));
// intent.setPackage("com.mx.browser");
startActivity(intent);
}
};
clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
}

private CharSequence getClickableHtml(String html) {
Spanned spannedHtml = Html.fromHtml(html);
SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);
URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);
for(final URLSpan span : urls) {
setLinkClickable(clickableHtmlBuilder, span);
}
return clickableHtmlBuilder;

4,最后,使用方法:

TextView tv = (TextView) findViewById(R.id.tv);
String url = "<a href=\"http://www.baidu.com\">www.baidu.com</a>"
+ "The Next Link is <a href=\"http://www.hao123.com\">hao123</a>";
tv.setText(getClickableHtml(url));
tv.setMovementMethod(LinkMovementMethod.getInstance());

總結:以上方法是從網上摘抄,但都少了 :tv.setMovementMethod(LinkMovementMethod.getInstance());

從而導致不能觸發點擊事件。點擊  new ClickableSpan() 可以看到,只有實現LinkMovementMethod方法才能觸發點擊事件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM