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

时间:2016-12-20 13:05:26

标签: android html android-intent hyperlink gmail

可能这个问题已经被问到或者是另一个问题的重复,但是我没有得到任何解决方案。 以下是我对我的问题所遵循的链接: 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共享来实现,无需标记。

enter image description here

所以最后我的搜索是,Android中是否有任何方式可以使用不同的提示值而不是链接(URL)来共享超链接文本。

6 个答案:

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