2012-06-01 10 views
5

Se invio solo testo, il selettore Intento di condivisione NON fornisce Facebook/Twitter come opzione.Selezione intenzioni Android Share - Condivisione di TESTO con Facebook/Twitter Social media ecc.

Solo Gmail, Skype e Evernote sono opzioni.

Ecco il mio codice

Intent shareIntent = new Intent(Intent.ACTION_SEND); 

shareIntent.setType("plain/text"); 
shareIntent.putExtra(Intent.EXTRA_TEXT, text) 
startActivity(Intent.createChooser(shareIntent, "Share using")); 

ho provato diverse combinazioni di setType() senza la gioia tra cui "text/*", "text/html" e passando testo HTML nella putExtra come segue:

shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("<p>This is the text that will be shared.</p>")); 

Quando uso "text/plain", Facebook si presenta come un'opzione ma il testo non si carica quando lo si seleziona. Ma il testo viene caricato per Twitter, e-mail, SMS.

Qualcun altro ha riscontrato questo problema?

Quando condivido un'immagine, non ci sono problemi e Facebook e altre app di social media sono disponibili nell'elenco.

+0

risposta trovato qui http://stackoverflow.com/questions/3515198/share-text-on-facebook-from-android-app-via-action-send – tiptopjat

risposta

3

questo dipende da quali filtri di intento sono definiti da ciascuna di tali app.
Per esempio se aggiungo intent-filtro android.intent.action.send

Se scelgo singola immagine dalla galleria verrà visualizzata la mia applicazione nella lista. Tuttavia, se scelgo più la mia applicazione non apparirà poiché non ho aggiunto l'intent-filer per android.intent.action.send_multiple

Quindi dipende da quali intenti sta filtrando Facebook. Devi vedere le note di rilascio o le pagine di aiuto o di sviluppo per questo.

+1

ho trovato una pagina che copre questo in profondità. Includendo un URL nel mio testo String. PER ESEMPIO. "Ciao, dai un'occhiata a http://www.bbc.co.uk Facebook riconosce la stringa, stranamente solo la parte URL della stringa, Twitter riconosce l'intera stringa insieme all'URL. Http://stackoverflow.com/questions/ 3515198/share-text-on-facebook-from-android-app-via-action-send – tiptopjat

+0

perché questi sono gli intenti che stanno filtrando !!! – Orlymee

7

Inoltre dovrebbe essere "text/plain" e non "plain/text" in base alla documentazione.

+0

Ecco cosa stava causando il problema qui. Grazie – jfcartier

2

Il problema di Facebook è un limite nelle autorizzazioni di Facebook. Utilizzare l'API facebook

1

Condividi via Twitter:

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
shareIntent.setType("text/plain"); 

shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, (String)v.getTag(R.string.app_name)); 

shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, (String)v.getTag(R.drawable.ic_launcher)); 

// per trovare il nome del pacchetto Twitter ---- >>

PackageManager pm = v.getContext().getPackageManager(); 

    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); 

    for (final ResolveInfo app : activityList) 
     { 
     if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) 
      { 
      final ActivityInfo activity = app.activityInfo; 
      final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); 
      shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
      shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      shareIntent.setComponent(name); 
      v.getContext().startActivity(shareIntent); 
      break; 
      } 
     } 

Condividi su Facebook

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,String)v.getTag(R.string.app_name)); 

    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, (String) 

v.getTag(R.drawable.ic_launcher)); 

// finding facebook package name 

    PackageManager pm = v.getContext().getPackageManager(); 
    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); 
    for (final ResolveInfo app : activityList) 
    { 
     if ((app.activityInfo.name).contains("facebook")) 
     { 
      final ActivityInfo activity = app.activityInfo; 
      final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); 
      shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
      shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      shareIntent.setComponent(name); 
      v.getContext().startActivity(shareIntent); 
      break; 
     } 
     } 

Condividi tramite Gmail

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 

    shareIntent.setType("text/plain");   

shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT(String)v.getTag(R.string.app_name)); 

shareIntent.putExtra(android.content.Intent.EXTRA_TEXT(String)v.getTag(R.drawable.ic_launcher)); 

// finding gmail package name --- 

    PackageManager pm = v.getContext().getPackageManager(); 

    List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); 

     for (final ResolveInfo app : activityList) 
     { 
      if ((app.activityInfo.name).contains("gmail")) 
      { 
      final ActivityInfo activity = app.activityInfo; 
      final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name); 
      shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
      shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
      shareIntent.setComponent(name); 
      v.getContext().startActivity(shareIntent); 
      break; 
      } 
     } 
Problemi correlati