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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Intent ACTION_SEND中将超链接传递给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,如:右键单击浏览器页面>>在弹出窗口中点击底部Inspect OR refer Inspect Element)格式,发现没有超链接文本的标签。

对于body1:它正在工作,我把URL作为电子邮件中的超链接,但我得到了URL作为超链接我不想在电子邮件中显示相同的URL而不是应该有一些提示值作为body2格式。这种格式可以通过身体中的直接URL共享来实现,无需标记。

enter image description here

所以最后我的搜索是,在Android中是否有任何方式可以使用不同的提示值而不是链接(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);

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

另一答案

你在身体里做的是完全正确的。

但Gmail会将额外的android.intent.extra.TEXTas读成字符串。

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

另一答案
 android:autoLink="web|email"

请在textview xml中添加此代码。它会直接进入gmail链接

另一答案

我不认为你可以使用电子邮件Intent。无意发送电子邮件使电子邮件客户端发送电子邮件这将支持HTML标记。

请参阅

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

另一答案

在你把你的String添加到额外之后,它失去了它作为Spanned的属性。如果你把它作为html发送,它可以由一些应用程序解决并显示你想要的。通常,您只需将纯文本放入BundleIntent中,并且每个应用程序都会按照自己的意愿解释它,因此没有解决方案将其作为html发送并强制应用程序将其显示为html。

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

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

另一答案

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

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

以上是关于如何在Intent ACTION_SEND中将超链接传递给Gmail?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Intent.ACTION_SEND分享Arraylist

如何通过 iOS 应用程序中的其他应用程序共享内容/数据,就像我们在使用 Intent.ACTION_SEND 的 Android 应用程序中所做的那样?

Intent.ACTION_SEND 不适用于奥利奥 [重复]

如何在Android中将视频上传到youtube?

使用 Android Intent.ACTION_SEND 发送电子邮件

使用 Android Intent.ACTION_SEND 发送电子邮件