2010-12-13 18 views
13

Ich benutze so etwas, um etwas Text mit den verfügbaren Anwendungen auf dem Telefon des Benutzers zu teilen.Android Share Intent Chooser

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))); 
} 

Mein Hauptproblem ist, dass ich einen anderen Text haben möchte, wenn der Benutzer Twitter statt E-Mail zum Beispiel (kurze Version mit kurzen URLs VS vollständigem Text mit angehängten Bildern) wählt.

Wie kann man herausfinden, für welche Anwendung der Benutzer sich entschieden hat?

+0

gumbercules hat eine fantastische Antwort hier: So http://stackoverflow.com/questions/5734678/custom-filtering-of-intent-chooser-based-on-installed-android-package-name – hitch45

Antwort

8

Sobald Sie den Text an das System mit createChooser übergeben, ist es aus Ihren Händen, keine Möglichkeit, den Text danach zu ändern.

+0

Ich müsste meine eigene Wahl treffen? : -/Clumsy API Design, nicht wahr? In diesem Fall, ein Beispiel-Code, wie Sie die Absicht speziell für Twitter oder Facebook zum Beispiel erstellen? –

+2

die betreffende App hätte ihre eigene öffentliche API veröffentlichen müssen, um Tweets zu senden, den Status zu aktualisieren, etc. Twitdroid ist die einzige App, die ich kenne, die das getan hat und keine andere folgt ihrer Konvention. Ich persönlich stört dieses Design nicht, ich denke, die Bequemlichkeit ist den Kompromiss wert. – schwiz

+0

Es ist in der Tat bequem, jedoch ist es ziemlich schwierig, sich beispielsweise an Beschränkungen der Nachrichtenlänge anzupassen. Ich könnte einfach einen Dialog hinzufügen, der den Benutzer fragt, ob er das Ding als kurzen oder langen Text teilen möchte. Nicht optimal bis auf die Anzahl der Klicks, um das zu erreichen, was man braucht, aber nur so weit, wie ich bisher denken kann. Danke für die Eingabe. –

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