Добавление изображений и текста с Facebook на Android

Facebook, почему вы никакие не берут изображения и текст в Намерении акции?

enter image description here

Я пытаюсь использовать стандартное Намерение акции Android добавить изображение и некоторый текст. Мое Намерение акции настраивается право, у меня есть изображение там, и я сделал свой конец соглашения. Мой код, позвольте мне показать вам его:

public void doShare() {
    File image = getShareFile();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("*/*");
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, resultObject.getShareSubject());
    shareIntent.putExtra(Intent.EXTRA_TEXT, resultObject.getShareText());
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(image));
    shareActionProvider.setShareIntent(shareIntent);
}

Facebook обнаруживается в списке приложений, которые будут обращаться с моим Намерением, но это находится!!! Когда нажатие на Facebook к фактическому делает акцию, которую это говорит:

Пожалуйста, приложите только фотографии или единственное видео.

Почему Facebook, почему? Почему вы обнаруживаетесь как приложение, которое может обращаться с моим Намерением, затем заставить меня выглядеть глупым своим пользователям, не обращаясь с Намерением? Вы обещали Facebook.

Я видел много много нитей на этом на всем протяжении этого места и сети. Кто-либо заставил это работать, не имея необходимость использовать их API?

34

9 ответы

Это - мое рабочее решение, как добавить изображение в Facebook через намерение. К сожалению, Facebook не принимает EXTRA_TEXT , таким образом, это может только добавить изображение. Это работает с другими заявлениями также, и с большинством из них может добавить также текстовый заголовок.

    /**
     * Show share dialog
     * @param file image to share
     * @param text text to add for sharing
     */
    private void shareImageAndTextResultIntent(File file, String text) {
       //share intent
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_TEXT, text);
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        shareIntent.setType("image/*");
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(Intent.createChooser(shareIntent, "send"));
    }

Если вы хотите добавить изображение наряду с заголовком, необходимо будет использовать Facebook SDK.

2
добавлено
Нет это все еще работает. Можно добавить изображения без любого текста, или можно также разделить только URL (без изображения), и Facebook заставит изображение и текст от этого URL делать предварительный просмотр.
добавлено автор Sandak, источник
Я думаю, что Facebook блокирует этот выбор, таким образом, необходимо использовать SDK и определенный FBButton
добавлено автор encastellano, источник
Да, that' s, как это работает на самом деле. Я имел в виду FB, не позволенный поделиться фотографией и текстом одновременно. Я просто подтверждал ваш ответ, жаль, если я произвел другое впечатление
добавлено автор encastellano, источник
Есть ли любой альтернативный способ разделить image+text в Facebook через Намерение.
добавлено автор yahme3, источник

Это - мое рабочее решение, как добавить изображение в Facebook через намерение. К сожалению, Facebook не принимает EXTRA_TEXT , таким образом, это может только добавить изображение. Это работает с другими заявлениями также, и с большинством из них может добавить также текстовый заголовок.

    /**
     * Show share dialog
     * @param file image to share
     * @param text text to add for sharing
     */
    private void shareImageAndTextResultIntent(File file, String text) {
       //share intent
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_TEXT, text);
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        shareIntent.setType("image/*");
        shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(Intent.createChooser(shareIntent, "send"));
    }

Если вы хотите добавить изображение наряду с заголовком, необходимо будет использовать Facebook SDK.

2
добавлено
Нет это все еще работает. Можно добавить изображения без любого текста, или можно также разделить только URL (без изображения), и Facebook заставит изображение и текст от этого URL делать предварительный просмотр.
добавлено автор Sandak, источник
Я думаю, что Facebook блокирует этот выбор, таким образом, необходимо использовать SDK и определенный FBButton
добавлено автор encastellano, источник
Да, that' s, как это работает на самом деле. Я имел в виду FB, не позволенный поделиться фотографией и текстом одновременно. Я просто подтверждал ваш ответ, жаль, если я произвел другое впечатление
добавлено автор encastellano, источник
Есть ли любой альтернативный способ разделить image+text в Facebook через Намерение.
добавлено автор yahme3, источник

Почему? Поскольку они - Facebook и могут разрешить себе такие ошибки. Так, они ожидают, что только изображения на тип - "изображение/". Если тип - "текст/равнина" - тогда, URL должен содержаться в сообщении. Не используйте .setType (" /* "); Иначе используйте их SDK. Но в этом случае вы пожертвуете простотой и гибкостью вашего заявления.

2
добавлено

Почему? Поскольку они - Facebook и могут разрешить себе такие ошибки. Так, они ожидают, что только изображения на тип - "изображение/". Если тип - "текст/равнина" - тогда, URL должен содержаться в сообщении. Не используйте .setType (" /* "); Иначе используйте их SDK. Но в этом случае вы пожертвуете простотой и гибкостью вашего заявления.

2
добавлено
File image = getShareFile();//name of files

Intent shareIntent = new Intent();

shareIntent.setAction(Intent.ACTION_SEND);

shareIntent.setType("*/*");

shareIntent.putExtra(Intent.EXTRA_SUBJECT, resultObject.getShareSubject());

shareIntent.putExtra(Intent.EXTRA_TEXT, resultObject.getShareText());//sharing text 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(image));//sharing image 

shareActionProvider.setShareIntent(shareIntent);
2
добавлено
работы для приложений как Gmail, но не для Facebook...
добавлено автор romedius, источник
File image = getShareFile();//name of files

Intent shareIntent = new Intent();

shareIntent.setAction(Intent.ACTION_SEND);

shareIntent.setType("*/*");

shareIntent.putExtra(Intent.EXTRA_SUBJECT, resultObject.getShareSubject());

shareIntent.putExtra(Intent.EXTRA_TEXT, resultObject.getShareText());//sharing text 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(image));//sharing image 

shareActionProvider.setShareIntent(shareIntent);
2
добавлено
работы для приложений как Gmail, но не для Facebook...
добавлено автор romedius, источник

Я не знаю, есть ли на самом деле намерение разделить с Facebook, но здесь, проверьте эту связь на Твиттер. Почта наряду с ответами, кажется, делает для хорошо написанной и подробной почты.

Намерение Android для приложения Твиттера

1
добавлено

Я не знаю, есть ли на самом деле намерение разделить с Facebook, но здесь, проверьте эту связь на Твиттер. Почта наряду с ответами, кажется, делает для хорошо написанной и подробной почты.

Намерение Android для приложения Твиттера

1
добавлено

Есть только одно решение, можно создать битовый массив текста и изображения, используя холст и разделить его в Facebook. (Загрузите исходный код здесь)

Вот мой код:

activity_main

 







    

    








MainActivity.java

package com.shareimage;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText et_text;
ImageView iv_image;
TextView tv_share,tv_text;
RelativeLayout rl_main;


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

    init();

}

private void init(){
    et_text = (EditText)findViewById(R.id.et_text);
    iv_image = (ImageView)findViewById(R.id.iv_image);
    tv_share = (TextView)findViewById(R.id.tv_share);
    rl_main = (RelativeLayout)findViewById(R.id.rl_main);
    tv_text= (TextView) findViewById(R.id.tv_text);

    File dir = new File("/sdcard/Testing/");
    try {
        if (dir.mkdir()) {
            System.out.println("Directory created");
        } else {
            System.out.println("Directory is not created");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    tv_share.setOnClickListener(this);

    et_text.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            tv_text.setText(et_text.getText().toString());

        }
    });


}




@Override
public void onClick(View v) {

    switch (v.getId()){
        case R.id.tv_share:
            Bitmap bitmap1 = loadBitmapFromView(rl_main, rl_main.getWidth(), rl_main.getHeight());
            saveBitmap(bitmap1);
            String str_screenshot = "/sdcard/Testing/"+"testing" + ".jpg";

            fn_share(str_screenshot);
            break;
    }

}

public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File("/sdcard/Testing/"+"testing" + ".jpg");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();

        Log.e("ImageSave", "Saveimage");
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}

public static Bitmap loadBitmapFromView(View v, int width, int height) {
    Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.draw(c);

    return b;
}

public void fn_share(String path) {

    File file = new File("/mnt/" + path);

    Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());
    Uri uri = Uri.fromFile(file);
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_STREAM, uri);

    startActivity(Intent.createChooser(intent, "Share Image"));


}
}
0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)