Ora sto facendo un piccolo progetto che vuole avere un pulsante di condivisione (finestra di dialogo), quando gli utenti lo cliccano, accederà automaticamente al proprio account fb e condividere il contenuto che vogliono.Facebook Android SDK 3.0, come condividere il contenuto senza LoginButton
Dopo il tutorial di fb dev, la mia app può condividere il contenuto a muro, ma è necessario effettuare il login con un pulsante fblogin prima di condividerlo.
Ho letto un post da StackOverflow: Android - Facebook SDK 3 - How to login programmatically without LoginButton
UPDATE: devo realizzare il feedDialog con onActivityResult nel mio progetto, ho scoperto che posso accedere e condividere con un solo pulsante. TUTTO, quando ricostruisco l'app/riavvia il telefono, devo premere il pulsante due volte per condividere la prima volta, ma diventare normale (premere una volta) in seguito.
P.S.I hanno attuarla con ShareActionProvider
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getSupportMenuInflater().inflate(R.menu.content_main, menu);
/** Getting the actionprovider associated with the menu item whose id is share */
mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share).getActionProvider();
/** Getting the target intent */
Intent intent = getDefaultShareIntent();
/** Setting a share intent */
if(intent!=null){
mShareActionProvider.setShareIntent(intent);
mShareActionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){
@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
if ("com.facebook.katana".equals(intent.getComponent().getPackageName())){
if (Session.getActiveSession() == null || Session.getActiveSession().isClosed()) {
Session.openActiveSession(Content.this, true, null);
}else{
publishFeedDialog();
}
return true;
}
return false;
}
});
}
return super.onCreateOptionsMenu(menu);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
if (Session.getActiveSession() != null || Session.getActiveSession().isOpened())
publishFeedDialog();
}
private void publishFeedDialog() {
Bundle params = new Bundle();
params.putString("name", "ab");
params.putString("caption", "cd");
params.putString("description", "def");
params.putString("link", "https://developers.facebook.com/android");
params.putString("picture", "abc.jpg");
WebDialog feedDialog = (
new WebDialog.FeedDialogBuilder(Content.this,
Session.getActiveSession(),
params))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,
FacebookException error) {
if (error == null) {
// When the story is posted, echo the success
// and the post Id.
final String postId = values.getString("post_id");
if (postId != null) {
Toast.makeText(Content.this,
"Posted story, id: "+postId,
Toast.LENGTH_SHORT).show();
} else {
// User clicked the Cancel button
Toast.makeText(Content.this.getApplicationContext(),
"Publish cancelled",
Toast.LENGTH_SHORT).show();
}
} else if (error instanceof FacebookOperationCanceledException) {
// User clicked the "x" button
Toast.makeText(Content.this.getApplicationContext(),
"Publish cancelled",
Toast.LENGTH_SHORT).show();
} else {
// Generic, ex: network error
Toast.makeText(Content.this.getApplicationContext(),
"Error posting story",
Toast.LENGTH_SHORT).show();
}
}
})
.build();
feedDialog.show();
}
Passare attraverso Ming Li risposta e il suo commento (secondo). –
lo so, ma voglio davvero un po 'più di spiegazione o codice becox non capisco ........ sono nuovo di Android dev –
@CalvinChan sei stato in grado di tirare fuori questo? Sto cercando la stessa soluzione in cui condividerò le foto – Casper