Поделиться текстом через Intent на Facebook без использования Facebook sdk

Поскольку Facebook не разрешает обмен текста через Intent, если мы не используем Facebook sdk, я ищу способ сделать это.

Я могу думать о 3 хаках, которые я могу использовать:

1) Поскольку Facebook разрешает совместное использование изображений, я могу создать Bitmap с разделяемым текстом, нарисованным на нем, и обмениваться изображением с помощью Intent.

2) Facebook позволяет обмениваться URL-адресами, для которых он также отображает Head страницы при совместном использовании. Я могу разместить выделенную страницу на своем сервере и передавать значения в качестве параметра в URL-адресе и генерировать Head, используя его. (У меня нет опыта работы с php, но я думаю, что это возможно)

3) Скопируйте текст в буфер обмена и сообщите об этом пользователю.

ИЛИ

Используйте комбинации всех 3.

Кто-нибудь может предложить мне гораздо лучший способ поделиться своим контентом на Facebook без использования Facebook sdk?

Спасибо заранее.

Ответ 1

Вы не можете делиться текстом только в Facebook с помощью андроида shareIntent.

Это возможно только через Facebook SDK, используя функции ссылок на ссылки.

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

К сожалению, намерение Facebook использовать может только один URL с префиксом http://и никаким дополнительным текстовым сообщением. На самом деле facebook выделяет текстовое содержимое и допускает только URL/Link. Это дизайн, и мы не контролируем его.

Это будет работать

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "http://www.google.com");
startActivity(Intent.createChooser(sharingIntent, "Share via"));

Это не сработает.

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_TEXT, "Share Text from App");
startActivity(Intent.createChooser(sharingIntent, "Share via"));

Только вы можете поделиться текстом в Facebook, используя Facebook SDK.

Ссылки

Аккаунт Android для facebook-share text И ссылка

Невозможно поделиться текстом со ссылкой через Android Share Intent

Акция для Android и Facebook

Ответ 2

Прежде всего, чтобы поделиться текстом на FB, вы должны использовать FB SDK.

Без FB SDK лучшим вариантом является переход на выделенный веб-сайт с данными "OG", которые будут автоматически решены. Таким образом, вы можете изменить свои данные OG, когда вам понадобится изменение.

Я бы посоветовал вам пойти на ваш взлом номер 2. Но при таком подходе FB позволяет пользователям нажимать на ссылку и перенаправлять на сайт, вы можете попытаться справиться с этим в соответствии с вашими требованиями.

Надеюсь, вы разъясните это.

Подробнее о OG, пожалуйста, проверьте Открыть информацию о графике

Ответ 3

Этот код позволяет вставлять контент только на facebook. какой идентификатор нужно получить список всех приложений, присутствующих в вашем телефоне, и найти открытое, а затем открытое приложение facebook, если оно уже присутствует.

        Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "text to be shared");
        PackageManager pm = 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);
                startActivity(shareIntent);
                break;
           }
        }

Ответ 4

Используйте эту функцию, я надеюсь, что это поможет

public static void share(Context context, String text, String subject, String title, String dialogHeaderText) {
    Intent intent = new Intent(android.content.Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(android.content.Intent.EXTRA_TEXT, text);
    intent.putExtra(Intent.EXTRA_TITLE, title);
    context.startActivity(Intent.createChooser(intent, dialogHeaderText));
}

Ответ 5

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

Это известная ошибка, и facebook сделал эту ошибку в списке пожеланий. Может быть, они не пытаются это исправить. Это намеренно заставить людей использовать FB SDK, я думаю. ссылайтесь на эту ссылку http://forum.developers.facebook.net/viewtopic.php?id=93900 и этот пост

http://forum.developers.facebook.net/viewtopic.php?id=93900

Ответ 6

Проверьте это:

Intent share=new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, "Some text you would like to share...");
share.setPackage("com.facebook.katana"); //Facebook App package
startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));

Вам не нужен файл facebook SDK с этим кодом......

Чтобы улучшить UX, вы можете проверить, установлено ли приложение Facebook (или приложение FacebookLite)...

Ответ 7

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

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent, "Choose sharing method"));