2015-05-04 18 views
9

Sto usando il seguente codice per condividere il collegamento su Facebook. quando l'utente fa clic su Annulla nell'interfaccia della finestra di dialogo Condividi, il metodo di callback onSuccess() viene chiamato a volte anziché onCancel(). E ottenere l'id post nullo.Si prega di aiutarmi cosa sta andando male?Android Facebook SDK 4.0.0 Condivisione della richiamata non funziona correttamente

ShareButton btn; 
CallbackManager callbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this); 
    callbackManager = CallbackManager.Factory.create(); 
    setContentView(R.layout.activity_share); 

    btn = (ShareButton) findViewById(R.id.btn_share); 

    btn.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
     @Override 
     public void onSuccess(Sharer.Result result) { 
      Log.e("Tag","Successfully posted"); 
      Log.e("Post id",result.getPostId()); 
     } 

     @Override 
     public void onCancel() { 

      Log.e("Tag","Canceled by user"); 

     } 

     @Override 
     public void onError(FacebookException error) { 

      Log.e("Tag",error.getLocalizedMessage()); 
     } 
    }); 
    ShareLinkContent content = new ShareLinkContent.Builder() 
      .setContentUrl(Uri.parse("My Custom URL")) 
      .setContentTitle("Test") 
      .build(); 

    btn.setShareContent(content); 

} 

@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 
+0

Ho gli stessi problemi. Sei stato in grado di risolvere questo? – cjserio

+0

Anche io sto affrontando lo stesso problema. – Shankar

+0

Ho anche lo stesso problema e non riesco a trovare una soluzione da nessuna parte. Sembra un bug in Facebook SDK per Android o qualcosa manca nella documentazione. –

risposta

3

Beh, forse sono in ritardo, ma ho affrontato lo stesso problema settimane fa. Quello che ho notato è che se si preme Annulla nella finestra di dialogo Condividi sul Web, viene chiamato il metodo onSuccess() ma l'oggetto Share.Result contiene un postId null, quindi è possibile controllare ogni volta che l'utente ha premuto annulla o condivide controllando la risposta Share.Result.

Un'altra cosa che ho notato è che se condividi il contenuto con l'app nativa installata, il campo postId è sempre nullo ... quindi dovrai verificare se l'utente ha l'app installata per controllare o meno il campo post ID.

+0

Ho provato ad usare il 'PostId' per identificare un'azione post riuscita, ma come hai detto quando l'app nativa è installata il' PostId' è sempre nullo. Avete qualche soluzione per rilevare annullare in questo scenario? – agarwaen

+0

Basta controllare se l'utente ha installato il pacchetto Facebook per fare una o l'altra logica. – ablanco

+0

Questa soluzione non riesce quando l'utente ha installato l'app nativa di Facebook e annulla la condivisione facendo clic sul pulsante freccia indietro sul lato in alto a sinistra della finestra di dialogo, in questo caso onSuccess viene richiamato, con postId null. – NecipAllef

Problemi correlati