如何在 Intent ACTION_SEND 中将超链接传递到 Gmail?

How to pass hyperlink to Gmail in Intent ACTION_SEND?

可能这个问题已经被问过或与另一个问题重复,但我的搜索没有得到任何解决方案。 以下是我针对我的问题所遵循的 links: Link1 Link2

实际上,我的问题与在 android 默认意图中与 ACTION_SEND 共享 HTML 文本有关。当我尝试创建具有不同值的 hyperlink 到 URL 时,它会显示一个简单的值文本。这是不可点击的 link.

这是我的做法:

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"));

正文2: 当我使用 Gmail 共享文本时,在电子邮件中 ​​hyperlinked 文本将作为普通文本出现。简直"Click Me"。我也在桌面浏览器上检查过它。但那里也是一样的。我在 Inspect Element 中检查了此文本(您可以获得浏览器页面的 Inspect Element,例如:右键单击浏览器页面 >> 在弹出窗口 window 中单击底部 Inspect OR refer Inspect Element)格式并在那里找到没有 hyperlink 文本的标签。

正文 1: 它正在工作,我在电子邮件中收到了作为 hyperlink 的 URL,但我收到了作为 hyperlink 的 URL 我不想显示相同的 URL 在电子邮件中,而不是应该有一些提示值作为 body2 格式。这种格式可以通过直接URL在正文中共享来实现,不需要标签。

所以最后我的搜索是,在 Android 中有什么方法可以共享具有不同提示值的 hyperlink 文本,而不是从 link(URL) .

我建议您使用字符串资源而不是 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);

然后尝试将其传递给意图并通过电子邮件发送,它应该是您希望的正确超链接。

您在 body 中所做的完全正确。

但 Gmail 将额外的 android.intent.extra.TEXT 读取为字符串。

您实际上是在提出功能请求/报告错误。

 android:autoLink="web|email"

请在文本视图中添加此代码xml。它将直接进入gmail link

我认为您无法使用电子邮件 Intent。无意发送电子邮件制作用于发送电子邮件的电子邮件客户端。这将支持 HTML 标签。

请参考

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

String 设为 extra 后,它会失去 Spanned 的属性。如果您将其发送为 html,它可以被一些应用程序解析并显示为您想要的。一般就是把明文放到你的IntentBundle里,每个应用程序怎么解释就怎么解释,所以没有办法把它发成html强制应用程序去显示为 html.

另一方面,如果您知道要通过共享使用哪些应用程序,则可以阅读其文档并检查它是否允许通过 ACTION_SEND intent 发送超链接。

您可以通过 intent.setType("text/html") 告诉接收者您的文本类型,也许某些应用程序行为取决于它。

是的,我实现了这个问题的解决方案。谢谢,@Faraz。

这是我的答案代码,因为我在 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"));