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

问题描述 投票:8回答:6

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

android html android-intent hyperlink gmail
6个回答
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
投票

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

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

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


0
投票
 android:autoLink="web|email"

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


0
投票

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

请参阅

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


0
投票

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

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

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


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"));
© www.soinside.com 2019 - 2024. All rights reserved.