可能这个问题已经被问到或者是另一个问题的重复,但是我没有得到任何解决方案。 以下是我对我的问题所遵循的链接: Link1 Link2
实际上,我的问题与使用ACTION_SEND在Android默认意图中共享HTML文本有关。当我尝试创建具有不同值的URL的超链接时,它显示一个简单的值文本。这不是可点击的链接。
以下是我的工作方式:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
String link = "https://www.android.com/";
String linkValue = "Click Me";
String body1 = "<a href=\"" + link + "\">" + link+ "</a>";//I don't want this
String body2 = "<a href=\"" + link + "\">" + linkValue + "</a>";//This is not working
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body2));
startActivity(Intent.createChooser(intent, "Share With"));
对于body2: 当我使用Gmail共享文本时,电子邮件中的超链接文本将作为普通文本。只需“点击我”。我也在桌面浏览器上查了一下。但它也是一样的。我在Inspect Element中检查了这个文本(你可以获得浏览器页面的Inspect Element,如:右键单击浏览器页面&gt;&gt;在弹出窗口中单击底部检查或参考Inspect Element)格式,发现没有标签用于超链接文本。
对于body1: 它正在工作,我把URL作为电子邮件中的超链接,但我得到了URL作为超链接我不想在电子邮件中显示相同的URL,而不应该有一些提示值作为body2格式。这种格式可以通过身体中的直接URL共享来实现,无需标记。
所以最后我的搜索是,Android中是否有任何方式可以使用不同的提示值而不是链接(URL)来共享超链接文本。
答案 0 :(得分:1)
我建议你使用一个字符串资源而不是一个Java字符串,这通常是一种很好的做法,这样你就不必逃避“。或者使用HTML数据,你必须将它包装在CDATA中。
XML:
<string name="readyandroid"><![CDATA[<a href="https://readyandroid.wordpress.com/">readyandroid</a>]]></string>
在Java中,将body2替换为:
String body2 = getString(R.string.readyandroid);
然后尝试将其传递给意图并通过电子邮件发送,它应该是您想要的正确超链接。
答案 1 :(得分:1)
你在身体里做的事情是完全正确的。
但Gmail会将额外的android.intent.extra.TEXT
作为字符串读取。
您实际上是在发送功能请求/报告错误。
答案 2 :(得分:0)
android:autoLink="web|email"
请在textview xml中添加此代码。它将直接进入gmail链接
答案 3 :(得分:0)
我认为你不能使用电子邮件Intent。无意发送电子邮件使电子邮件客户端发送电子邮件这将支持HTML标记。
参考
http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android
答案 4 :(得分:0)
将String
添加到额外内容后,会将其归为Spanned
。如果你把它作为html发送,它可以由一些应用程序解决并显示你想要的。通常,您只需将纯文本放入Bundle
的{{1}}中,每个应用程序都会按需要解释它,因此没有解决方案将其作为html发送并强制应用程序将其显示为html
另一方面,如果您知道将通过共享使用哪些应用程序,您可以阅读其文档并检查它是否允许通过ACTION_SEND意图发送超链接。
您可以通过Intent
告诉接收者您的文本类型,也许某些应用程序行为取决于它。
答案 5 :(得分:0)
是的,我实现了这个问题的解决方案。谢谢,@法拉兹。
这是我的答案代码,因为我在string.xml中创建了标记字符串
<string name="link_to_google_map"><![CDATA[<a href="http://maps.google.com/maps?&z=10&q=%1$s+%2$s">LINK TO GOOGLE MAP</a>]]></string>
我的代码是这样的,它非常适合在android中使用标记共享:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
String shareText = "Thank you for using the ReadyAndroid App" + "<br />" + "Name : " + "ReadyAndroid";
shareText += "<br />" + "Address : " + "https://readyandroid.wordpress.com/ <br />Mandawa, Jhunjhunu, Rajasthan 333704";
String mapLocation = String.format(getString(R.string.link_to_google_map), 28.0500, 75.1487);
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(shareText+mapLocation));
startActivity(Intent.createChooser(intent, "Share with"));