2010-08-13 18 views
6

Estoy usando este código para publicar en Facebook, pero no funciona con la aplicación oficial de Facebook porque intenta enviarlo como un enlace. ¿Hay alguna forma de evitar esto?Android Facebook Intención

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

¿Puede explicarme más en detalle a qué se refiere? ¿Quiere decir que la aplicación de Facebook se abre cuando la elige en el menú Compartir, pero el campo EXTRA_TEXT es una URL compartida en lugar del mensaje del recurso compartido? – matto1990

+0

excatly. uso esta intención para compartir texto a través de sms, correo electrónico, twitter, ect de Facebook ... el problema es que si selecciono Facebook de la selección emergente, la cadena "EXTRA_TEXT, qoute" se está compartiendo como una url en Facebook. esto solo ocurre con la aplicación de Facebook del desarrollador "facebook". – zaid

Respuesta

7

Es un error en la aplicación oficial de Facebook. Tuve que codificar mi propia actividad para hacerlo usando el SDK de Facebook para Android. Vea el ejemplo de código a continuación.

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

} 
Cuestiones relacionadas