2013-03-14 1 views
2

Если я использую намерение с ACTION_SEND и набираю текст/plain, а EXTRA_TEXT Facebook ничего не заполняет. Это то, что я уже видел. Каждый говорит, используйте SDK для Facebook, но я не хочу, чтобы мое приложение ничего не публиковало и не обрабатывало токены входа из моего приложения. Я просто хочу, чтобы экран Write Post Facebook был открыт с предварительно определенным текстом, ссылкой и изображением. Точно так же, когда я использую изображение из приложения «Галерея». Является ли это возможным?Как открыть Facebook Написать сообщение с определенным заранее определенным текстом и изображением

+0

сво знать ошибка в Facebook .. может вы можете создать диалоговое окно, как Facebook и может разместить его одним нажатием. – itsrajesh4uguys

+0

, но как приложение Gallery справляется с этой проблемой? Если я выбрал Facebook для публикации фотографии, фотография появится в приложении Facebook. –

+0

Это делается через Intent.ACTIONSEND умысла – itsrajesh4uguys

ответ

2

Хорошо, это невозможно сделать с помощью намерения. Единственное решение для отображения текста, изображений + ссылок и позволяет пользователю писать что-то перед его публикацией - это использовать уродливый «Диалог фида» (или создание настраиваемого действия с помощью EditText, в котором пользователь может написать сообщение).

Вот код, который работает:

public class FacebookPostActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_facebook_post); 

    Session.openActiveSession(this, false, new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      if(session.isOpened()){ 
       publishFeedDialog(); 
      } 
     } 
    }); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 

private void publishFeedDialog() { 
    Bundle params = new Bundle(); 
    params.putString("name", "Facebook SDK for Android"); 
    params.putString("caption", "Build great social apps and get more installs."); 
    params.putString("description", "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps."); 
    params.putString("link", "https://developers.facebook.com/android"); 
    params.putString("picture", "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png"); 

    WebDialog feedDialog = new WebDialog.FeedDialogBuilder(this, Session.getActiveSession(), params) 
      .setOnCompleteListener(new OnCompleteListener() { 
       @Override 
       public void onComplete(Bundle values, FacebookException error) { 
        if(error == null){ 
         final String postId = values.getString("post_id"); 
         if(postId != null){ 
          Toast.makeText(FacebookPostActivity.this, "Posted story, id: " + postId, Toast.LENGTH_SHORT).show(); 
         }else{ 
          Toast.makeText(FacebookPostActivity.this, "Publish cancelled", Toast.LENGTH_SHORT).show(); 
         } 
        }else if(error instanceof FacebookOperationCanceledException){ 
         // User clicked the "x" button 
         Toast.makeText(FacebookPostActivity.this, "Publish cancelled", Toast.LENGTH_SHORT).show(); 
        }else{ 
         // Generic, ex: network error 
         Toast.makeText(FacebookPostActivity.this, "Error posting story", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }).build(); 

    feedDialog.show(); 
} 

}

Смежные вопросы