Android分享对可点击链接的意图

时间:2015-06-18 20:52:54

标签: android android-intent social-networking android-sharing

我浏览过网络但尚未找到符合我特定需求的解决方案。我正在寻找一种方法来共享信息与共享意图,提供可点击的链接,如:

查看此新闻文章

通过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 个答案:

答案 0 :(得分:4)

首先,我不希望您的项目甚至构建,因为字符串资源不支持任意HTML标记。唯一记录的是<b><i><u>

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

要克服这两个问题,要么将该字符串移动到Java中(毕竟,它不像你已经去过,在你的代码片段中的其他地方有硬编码的英语),或者将字符串内容包装在{{1 (同时修复损坏的HTML,同时使用CDATA属性href):

<a>

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

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

接下来,当您通过HTML发送时,您将其声明为纯文本。因此,许多应用程序将其视为纯文本,并且可以执行任何操作,从忽略标记到显示原始HTML。欢迎您尝试Check out this news article via <a href="http://google.com">Jimmy's News App</a> 作为MIME类型,看看您是否获得了更好的结果。

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