从strings.xml获取可共享的URL以获取共享Intent Android Studio

时间:2015-05-11 23:32:13

标签: android android-intent android-studio

我一直在寻找数小时试图让我的分享意图成为特定网址的超链接。我为TextView看到了很多答案,但没有找到共享意图的答案,我无法弄清楚如何将textView答案应用于此。

基本上我想要这个字符串

<string name="link"><a href="https://play.google.com/store/apps/details?blahblah">EatingOut</a></string>

使用

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_restaurant);
    share = getString(R.string.link);
}

    private void setShareIntent() {

    if (mShareActionProvider != null) {

        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Share");
        shareIntent.putExtra(Intent.EXTRA_TEXT, "Eating at "+ title.getText() + " #" + share );

        mShareActionProvider.setShareIntent(shareIntent);
    }
}

问题是当我分享它时,没有指向“共享”部分的超链接。 我已经尝试了很多不同的建议,但是我说的大部分都是针对textViews

编辑:尝试过TextUtils.concat,但是没有“#”

的超链接
        CharSequence socialShare = TextUtils.concat("Eating at ", title.getText(), " #", share);
                    Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Share");
        shareIntent.putExtra(Intent.EXTRA_TEXT, socialShare );

1 个答案:

答案 0 :(得分:0)

  

问题是,当我分享它时,没有超链接到&#34;分享&#34;一部分。

这里有一些问题。

首先,我不知道<a>是一个可以在字符串资源中使用的有效HTML样式标记。

其次,getString()将删除该HTML样式的标记,即使它存在。

第三,您要将ACTION_SEND Intent的MIME类型设置为text/plain,HTML是不同的MIME类型。

考虑到所有这些,您需要决定是否要在文本中与URL共享纯文本(依靠&#34; share&#34;收件人来识别URL并使其对用户有用,如果适用),或者如果你要分享HTML(并希望&#34;分享&#34;收件人不会搞砸太糟糕)。

如果要分享纯文本,请将字符串资源更改为:

<string name="link">https://play.google.com/store/apps/details?blahblah</string>

您还需要删除连接字符串中的#,或者在其后添加空格,因为将#置于URL之前可能会混淆其他应用,导致它们不会将URL识别为URL。

如果您要分享HTML,则需要更改setType()以传递text/html,然后将EXTRA_TEXT设置为HTML格式的字符串或Spanned对象(例如,通过SpannableStringBuilder创建)。