Android: Como compartilhar imagem com texto no facebook via intenção ?

? Mansi @ | Original: StackOverFlow
---

Eu gostaria de compartilhar uma foto com legenda pré -cheia do meu aplicativo via uma intenção social, no facebook.

Example code

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");      

intent.putExtra(Intent.EXTRA_TEXT, "eample");
intent.putExtra(Intent.EXTRA_TITLE, "example");
intent.putExtra(Intent.EXTRA_SUBJECT, "example");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);

Intent openInChooser = new Intent(intent);
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
startActivity(openInChooser);

Aqui está captura de tela que eu recebo

Android: Como compartilhar imagem com texto no facebook via intenção?

Se um tipo de conjunto para a imagem / * em seguida, uma foto é carregada sem o texto previamente preenchido . Se um set -lo ao texto / foto sem formatação não é exibir .....

---

Top 5 Responder

1Vaishali @
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);

   shareIntent.setType("image/*");

   shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, (String) v.getTag(R.string.app_name));

   shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); // put your image URI

   PackageManager pm = v.getContext().getPackageManager();

   List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);

     for (final ResolveInfo app : activityList) 
     {
         if ((app.activityInfo.name).contains("facebook")) 
         {

           final ActivityInfo activity = app.activityInfo;

           final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);

          shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);

          shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

          shareIntent.setComponent(name);

          v.getContext().startActivity(shareIntent);

          break;
        }
      }
2Rithchard Javier @

Try with this

private void initShareIntent(String type,String _text){
     File filePath = getFileStreamPath("shareimage.jpg");  //optional //internal storage
     Intent shareIntent = new Intent();
     shareIntent.setAction(Intent.ACTION_SEND);
     shareIntent.putExtra(Intent.EXTRA_TEXT, _text);
     shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(new File(filePath)));  //optional//use this when you want to send an image
     shareIntent.setType("image/jpeg");
     shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
     startActivity(Intent.createChooser(shareIntent, "send"));
}
3Karthik P B @

Adicione estas linhas no seu código a seguir

shareCaptionIntent.putExtra(Intent.EXTRA_TITLE, "my awesome caption in the EXTRA_TITLE field");
4Eduardo Oliveira @

As versões mais recentes do Facebook não permite que você compartilhe as intenções de texto usando. Você tem que usar o Facebook SDK para fazê-lo - para fazer essa simples, use o Facebook SDK + Android Simples Facebook ( https://github.com/sromku/android-simple-facebook ) . Usando a biblioteca, o código seria assim (extraído do site Facebook simples ):

Publish feed

Defina OnPublishListener e chamar para:

publish(Feed, OnPublishListener) without dialog. publish(Feed, true, OnPublishListener) with dialog. Basic properties message - The message of the user name - The name of the link attachment caption - The caption of the link (appears beneath the link name) description - The description of the link (appears beneath the link caption) picture - The URL of a picture attached to this post. The picture must be at least 200px by 200px link - The link attached to this post

Inicializar ouvinte callback :

OnPublishListener onPublishListener = new OnPublishListener() {
    @Override
        public void onComplete(String postId) {
            Log.i(TAG, "Published successfully. The new post id = " + postId);
        }

     /* 
      * You can override other methods here: 
      * onThinking(), onFail(String reason), onException(Throwable throwable)
      */
};

Build feed:

Feed feed = new Feed.Builder()
    .setMessage("Clone it out...")
    .setName("Simple Facebook for Android")
    .setCaption("Code less, do the same.")
    .setDescription("The Simple Facebook library project makes the life much easier by coding less code for being able to login, publish feeds and open graph stories, invite friends and more.")
    .setPicture("https://raw.github.com/sromku/android-simple-facebook/master/Refs/android_facebook_sdk_logo.png")
    .setLink("https://github.com/sromku/android-simple-facebook")
    .build();

Publicar alimentação sem diálogo :

mSimpleFacebook.publish(feed, onPublishListener);

Publicar alimentação com caixa de diálogo:

mSimpleFacebook.publish(feed, true, onPublishListener);
5Vaiden @

FB já não lhe permite prefill a mensagem de partilha.

A fim de contornar isso, você vai precisar usar um SDK para publicar através de uma solicitação Graph. Para isso, você vai precisar do publish_actions permissão. Desde o mês passado você precisa https://developers.facebook.com/docs/facebook-login/permissions/v2.2 para ter acesso ao publish_actions . Que você seria um fracasso se o seu aplicativo prefills os textos de compartilhamento. Confie em mim - eu tive o Chutzppah tentar.

Portanto, parece que teríamos de cumprir .

B.t.w. no iOS você ainda pode prefill os textos usando o SDK FB . Quem sabe por quanto tempo.