2010-08-13 16 views
6

Sto usando questo codice per pubblicare su Facebook, ma non funziona con l'app ufficiale di Facebook perché tenta di inviare come collegamento. C'è un modo per aggirare questo?Android Facebook Intent

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

s.setType("text/plain"); 
s.putExtra(Intent.EXTRA_SUBJECT, "Quote"); 
s.putExtra(Intent.EXTRA_TEXT, qoute); 

startActivity(Intent.createChooser(s, "Quote")); 
+0

Puoi spiegare più a fondo cosa intendi? Vuoi dire che l'applicazione di Facebook si apre quando lo scegli dal menu di condivisione, ma il campo EXTRA_TEXT è un URL condiviso invece del messaggio della condivisione? – matto1990

+0

excatly. Io uso questo intento per condividere il testo tramite sms, email, twitter, facebook ecc. il problema è che se seleziono facebook dalla selezione pop-up, la stringa "EXTRA_TEXT, qoute" viene condivisa come url su Facebook. questo succede solo con l'app di facebook dal dev "facebook". – zaid

risposta

7

È un bug nell'app ufficiale di Facebook. Ho dovuto codificare la mia attività per farlo usando l'SDK di Facebook per Android. Guarda il codice di esempio qui sotto.

public class FacebookActivity extends Activity implements DialogListener 
{ 

    private Facebook facebookClient; 
    private LinearLayout facebookButton; 
    private final String APP_API_ID = "XXXXXXXX"; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     facebookClient = new Facebook(); 
     // replace APP_API_ID with your own 
     facebookClient.authorize(this, APP_API_ID, 
      new String[] {"publish_stream", "read_stream", "offline_access"}, this); 


    } 

    @Override 
    public void onComplete(Bundle values) 
    { 

     if (values.isEmpty()) 
     { 
      //"skip" clicked ? 

     } 

     // if facebookClient.authorize(...) was successful, this runs 
     // this also runs after successful post 
     // after posting, "post_id" is added to the values bundle 
     // I use that to differentiate between a call from 
     // faceBook.authorize(...) and a call from a successful post 
     // is there a better way of doing this? 
     if (!values.containsKey("post_id")) 
     { 
      try 
      { 
       Bundle parameters = new Bundle(); 
       parameters.putString("message", "YOUR TEXT TO SHARE GOES HERE");// the message to post to the wall 
       facebookClient.dialog(this, "stream.publish", parameters, this);// "stream.publish" is an API call 


      } 
      catch (Exception e) 
      { 
       // TODO: handle exception 
       System.out.println(e.getMessage()); 
      } 

     } 

    } 

    @Override 
    public void onError(DialogError e) 
    {  
     return; 
    } 

    @Override 
    public void onFacebookError(FacebookError e) 
    { 
     return; 
    } 

    @Override 
    public void onCancel() 
    {  
     return;  
    } 

} 
Problemi correlati