Android 与可点击的分享 Intent link

Android share Intent with clickable link

我浏览了整个网络,但尚未找到适合我特定需求的解决方案。我正在寻找一种通过共享意图共享信息的方法,该意图提供可点击的 link,例如:

查看这篇新闻文章

通过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 等中共享时,link 将被忽略并且推文仅显示纯文本,如下所示:

我试过 MIME 类型,但还是没有雪茄。无论如何,共享时是否可以让 "Jimmy's News App" 可点击?我非常感谢任何和所有帮助和/或提示。

提前致谢!

首先,我什至没想到您的项目能够构建,因为字符串资源不支持任意 HTML 标记。唯一记录的是 <b><i><u>.

其次,即使它确实支持任意 HTML 标记,您也将其从 Spanned (getText()) 转换回纯字符串,这将删除该格式。

为了克服这两个问题,要么将该字符串移动到 Java(毕竟,这不像你有 i18n,在你的代码片段中的其他地方使用硬编码的英语),或者将字符串内容包装在 Java =17=](同时修复损坏的 HTML,将 href 用于 <a> 属性):

<string name="shared_via"><![CDATA[via <a href="http://google.com">Jimmy's News App</a>]]></string>

此时,如果您查看连接后的字符串,它应该看起来像准HTML source:

Check out this news article

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

接下来,当您通过 HTML 发送时,您将其声明为纯文本。因此,许多应用会将其视为纯文本,并可能执行从忽略标签到显示原始 HTML 的任何操作。欢迎您尝试 text/html 作为 MIME 类型,看看是否能获得更好的结果。

最后,不要求任何应用程序真正尊重您的链接。 ACTION_SEND 是请求,不是命令。第三方应用程序如何使用您发送过来的 HTML 没有任何规则,因此您将从不同的应用程序中获得不同的结果。