2014-10-01 37 views
1

我使用此代碼使用意圖共享我的數據;android:使用意圖共享格式化數據

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:")); 

正如你在我使用SpannableStringBuilderSpannableString格式化結果的代碼中看到的,但是當我在結果沒有共享顯示。我錯過了什麼嗎? Intent支持共享格式化的字符串嗎?例如當我將shareBuilder對象顯示到TextView中時,它顯示了我的預期。例如在一個TextView顯示我應該設置叫BufferType.SPANNABLE第二參數setText方法:

txt.setText(shareBuilder, BufferType.SPANNABLE); 

現在,我該如何設置BufferType我的意圖是什麼?或者我應該爲我的Intent對象設置什麼MIME類型來傳遞我的格式化數據?
任何想法?

回答

2

我錯過了什麼嗎?

您正在將SpannableStringBuilder轉換爲String,因爲您正在將其放入臨時演員中,並刪除所有格式。

另外,text/plain並不表示應該存在任何格式。

最後,雖然你可以把SpannableStringBuilder的額外直接作爲CharSequence,它可能仍然被轉換成一個String上的共享應用程序的身邊,因爲沒有一個應用程序的支持共享格式的內容要求。

或者我應該爲我的Intent對象設置什麼MIME類型來傳遞我的格式化數據?

您可以生成HTML而不是Spanned,並使用text/html。我不知道MIME類型的慣例會實際上是格式化的CharSequence,比如您的SpannableStringBuilder