将域添加到相对链接

时间:2014-04-30 13:07:46

标签: java android html

我从我的服务器中获取包含HTML的一些数据,以便在我的应用中使用,而html包含一些像<a href="/go/here">Go here</a>这样的链接。

我将html应用于TextView,如

text.setText(Html.fromHtml(htmlString));
text.setMovementMethod(LinkMovementMethod.getInstance());

该链接有效,但导致我的应用程序崩溃

No Activity found to handle Intent { act=android.intent.action.VIEW dat=/go/here...`

我猜这次崩溃是因为它是一个相对链接并且没有域名。是否有任何方法,可能是Regex,来搜索所有<a/>标签和在它之前添加域名?

3 个答案:

答案 0 :(得分:1)

int index = htmlString.indexOf("<a>");
String part1 = htmlString.subString(0,index+2);
String part2 = htmlString.subString(index+3);
String newHtmlString = part1+"http://"+part2;

答案 1 :(得分:1)

我很想走最简单的方法:

final String faultyHtml = "Link: <a href=\"/images/nav_logo193.png\">click here</a> etc etc";
final String domain = "http://www.google.fr";

final String fixedHtml = faultyHtml.replace("href=\"/", "href=\"" + domain + "/");

text.setText(Html.fromHtml(fixedHtml));
text.setMovementMethod(LinkMovementMethod.getInstance());

(所有出现的事件都会添加到同一个域中)

答案 2 :(得分:0)

您可以尝试使用此代码。

TextView tv = (TextView) findViewById(R.id.textView1);
    String text = "This is just a test. Click this link here <a href=\"http://www.google.com\">Google</a> to visit google.";
    tv.setMovementMethod(LinkMovementMethod.getInstance());
    tv.setText(Html.fromHtml(text));

参考How to make links in textview clickable in android?