Android分享意图与可点击链接

3

我在网上找了很久,但还没有找到适合我特定需求的解决方案。我正在寻找一种通过共享意图分享信息的方法,该方法提供可点击的链接,类似于:

查看这篇新闻文章

通过Jimmy's News App查看

我已经成功地在我的Android应用程序中设置了一个共享意图,它看起来像这样:

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Text");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Check out this news article" + "\n\n" + getResources().getText(R.string.shared_via));
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent, "Share this article with..."));

我的字符串资源看起来像这样:

<string name="shared_via">via <a ref="http://google.com">Jimmy's News App</a></string>

分享功能本身没有问题,但是当在电子邮件、Twitter等平台分享时,链接被忽略,推文只显示纯文本,如下所示:enter image description here 我尝试了调整MIME类型,但仍然无法解决。有没有办法让“Jimmy's News App”在分享时可以点击呢?非常感谢任何和所有的帮助和提示。
提前致谢!
1个回答

5
首先,我不会期望你的项目能够成功构建,因为字符串资源并不支持任意HTML标记。唯一被记录的是<b><i><u>
其次,即使它支持任意的HTML标签,你将它从Spanned(getText())转换回普通字符串,这将会移除该格式。
要解决这两个问题,可以把字符串内容移到Java中(毕竟,在代码片段中,你的硬编码英文并没有使用i18n),或者将字符串内容包装在CDATA中(同时修复你的破碎HTML以使用href作为<a>属性)。
<string name="shared_via"><![CDATA[via <a href="http://google.com">Jimmy's News App</a>]]></string>

此时,如果您查看您的串联字符串,它应该类似于准HTML源代码:

Check out this news article

via <a href="http://google.com">Jimmy's News App</a>

其次,当您发送HTML时,您将其声明为纯文本。因此,许多应用程序将其视为纯文本,并可能从忽略标记到显示原始HTML执行任何操作。您可以尝试使用text/html作为MIME类型,看看是否能获得更好的结果。

最后,没有任何应用程序实际上需要遵守您的链接。 ACTION_SEND是一种请求,而不是命令。对于第三方应用程序如何使用您发送的HTML没有规则,因此您将从不同的应用程序中获得不同的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接