2010-12-13 86 views
13

我正在使用類似的東西來共享使用用戶手機上的可用應用程序的一些文本。Android共享意向選擇器

public void share(String subject,String text) { 
    final Intent intent = new Intent(Intent.ACTION_SEND); 

    intent.setType("text/plain"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putExtra(Intent.EXTRA_TEXT, text); 

    startActivity(Intent.createChooser(intent, getString(R.string.share))); 
} 

我的主要問題是,我想有一個不同的文本,如果用戶選擇Twitter的,而不是電子郵件,例如(短版與短網址VS附帶圖像全文)。

如何找出用戶決定使用哪個應用程序?

+0

gumbercules這裏有一個夢幻般的回答: http://stackoverflow.com/questions/5734678/custom-filtering-of-intent-chooser-based-on-installed-android-package-name – hitch45 2012-05-31 22:18:46

回答

8

一旦您將文本交給系統,createChooser就無法使用它,無法在此之後更改文本。

+0

所以我必須建立我自己的選擇器? : - /笨拙的API設計是不是?在那種情況下,任何關於如何創建專門針對Twitter或Facebook的意圖的示例代碼? – 2010-12-13 17:11:21

+2

有問題的應用程序將不得不發佈自己的公共API用於發送推文,更新狀態等。Twitdroid是我所知道的唯一一個已經這樣做的應用程序,沒有其他人遵循其約定。我個人不介意這種設計,我認爲便利是值得的權衡。 – schwiz 2010-12-13 17:13:45

+0

確實很方便,但是例如很難適應消息長度的限制。我可能只是添加一個對話框,詢問用戶他是否想將文章分享爲短文本或長文本。就達到您所需的點擊次數而言,這並不是最佳選擇,但只有我能想到的方式。感謝您的意見。 – 2010-12-14 12:40:06

1
Intent intent = new Intent(Intent.ACTION_SEND); 

intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, textWhichYouWantToShare); 

startActivity(Intent.createChooser(intent, getString(R.string.share)));