2012-11-22 11 views
5

Uso intento e azione.SEND per condividere il mio messaggio personalizzato su social network come WhatsApp, Twitter, Facebook e GMail. Tutto è a posto su Gmail e altre applicazioni tranne Facebook! Come posso personalizzare il mio codice per condividere qualcosa su Facebook? Condivido su Facebook utilizzando Facebook SDK senza problemi, ma voglio farlo usando un intento.Condivisione di contenuti su FaceBook Android

questo è quello che uso:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp"); 

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle); 
sendIntent.setType("*/*"); 
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article")); 

risposta

5

Quello che ho fatto è stato effettivamente intercettare il target scelto degli intenthandlers, puoi farlo usando il tuo actionprovider. Diciamo che hai creato un oggetto che con un onclick avvia l'intento. Per fare ciò, puoi istanziare un actionprovider per farlo. Questo actionprovider può avere un setOnShareTargetSelectedListener per intercettare eventuali intenti che si desidera gestire in modo diverso (o per niente ^^). Guarda il codice qui sotto per come configurare il tuo actionprovider.

actionProvider.setShareIntent(createShareIntent()); 
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){ 

     @Override 
     public boolean onShareTargetSelected(ShareActionProvider source, 
       Intent intent) { 
      if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) { 
       mfacebooksharer.shareStatus(subject, text); 
        return true; 
       } 
       return false; 
     } 

    }); 

Ogni volta che viene scelto facebook, io uso il mio mfacebooksharer per gestire l'intento e seguire le API di Facebook. Ofcourse, che actionrpovider deve avere un intento. (Proprio come volevi lavorare con un intento). Io uso il metodo qui sotto per creare l'intento.

private Intent createShareIntent() { 
     intentsetter.setIntentleave(true); 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
     shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);   
     return shareIntent; 
    } 
+0

Funziona solo su Android 4.0 – Giorgi

1

Utilizzando Intent in Android, è possibile condividere solo un link senza testo:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca"); 
startActivity(Intent.createChooser(intent, "Share with")); 

Funzionerà. Se si desidera condividere il testo e il link, è necessario utilizzare l'SDK di Facebook per Android: https://github.com/facebook/facebook-android-sdk

4

Come per la di Facebook Politiche della piattaforma, non è possibile pre-compilare la finestra di condivisione utilizzando Intent.EXTRA_TEXT. Di solito si pensa che sia un bug, ma come da un Bug Report presentato here e anche, here, Facebook menziona chiaramente che questo non è il caso (non è un bug).

Si può leggere di più sulla loro Platform Policies specificamente, Piattaforma politica IV.2

Citazione di Piattaforma Politica IV.2:

Non deve pre-compilare uno dei campi associato ai seguenti prodotti , a meno che l'utente non abbia generato manualmente il contenuto in precedenza nel flusso di lavoro : Stream (parametro user_message per Facebook.streamPublish e FB.Connect.st reamPublish e il messaggio parametro per stream.publish), Foto (didascalia), Video (descrizione), Note (titolo e contenuto), Collegamenti (commento) e Jabber/XMPP.

Questi campi sono destinati agli utenti di esprimere se stessi. Pre-riempimento questi campi erode l'autenticità della voce dell'utente.

L'unico modo è possibile condividere storie dalla vostra applicazione è integrando il Facebook SDK, che secondo il vostro messaggio, si è già in grado di successo. Questa è l'unica opzione disponibile (sfortunatamente).

+0

Ok ma voglio che l'utente si diriga alla mia condivisione Facebook personalizzata usando l'SDK di Facebook, come posso rilevare l'utente cliccato su Facebook e non Gmail per esempio !! quindi se il suo facebook posso fare facilmente quello che voglio –

+0

@MahdiGiveie: vuoi che l'utente selezioni la tua app dall'elenco delle applicazioni con cui possono condividere? –

+0

non è la mia app !! Voglio che l'utente quando fa clic su Facebook dall'elenco delle applicazioni che l'utente può condividere con la diretta alla mia condivisione Facebook personalizzata! il mio problema è come posso rilevare che l'utente ha cliccato su facebook dalla lista? –

Problemi correlati