我正在使用此代码使用Intent共享我的数据;
SpannableStringBuilder shareBuilder = new SpannableStringBuilder();
String input = "Input String";
SpannableString greenSpannable= new SpannableString(input);
greenSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#678a00")), 0, input.length(), 0);
greenSpannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0,input.length(), 0);
shareBuilder.append(greenSpannable);
Intent shareIntent=new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBuilder.toString());
context.startActivity(Intent.createChooser(shareIntent, "Select:"));
正如您在代码中看到的,我使用SpannableStringBuilder
和SpannableString
来格式化结果,但是当我在结果中没有显示任何内容时。我错过了什么吗? Intent是否支持共享格式化字符串?例如,当我将shareBuilder
对象显示在TextView中时,它会显示我的预期。例如,为了在TextView中显示,我应该为BufferType.SPANNABLE
方法设置一个名为setText
的第二个参数:
txt.setText(shareBuilder, BufferType.SPANNABLE);
现在,如何为我的意图设置BufferType
?或者我应该为我的Intent对象设置什么MIME类型来传递我的格式化数据?
有什么想法吗?
答案 0 :(得分:2)
我错过了什么吗?
您正在将SpannableStringBuilder
转换为String
,因为您要将其放入附加内容中,删除所有格式。
此外,text/plain
并不表示应存在任何格式。
最后,虽然您可以将SpannableStringBuilder
直接作为CharSequence
添加到附加内容中,但它仍可能会在共享应用程序的一侧转换为String
,不要求应用支持共享格式化内容。
或者我应该为我的Intent对象设置什么MIME类型来传递我的格式化数据?
您可以生成HTML而不是Spanned
,并使用text/html
。我不知道MIME类型的约定实际上是CharSequence
格式化的SpannableStringBuilder
。
答案 1 :(得分:0)
您可以使用该界面在不同活动之间发送数据,在特定事件期间触发侦听器并在目标活动中监听事件