Facebook SDK 4.0 ShareDialog

Искам да споделя изображение от моето приложение за Android с помощта на facebook SDK 4.0. Накарах го да работи с ShareDialog, но когато потребителят няма инсталирано FB приложение, според developers.facebook, SDK трябва да използва диалоговия прозорец за уеб споделяне вместо това:

В предишни версии на SDK за Android вашето приложение трябваше да проверява за родно, инсталирано приложение на Facebook, преди да може да отвори диалоговия прозорец за споделяне. Ако лицето не е инсталирало приложението, трябва да предоставите свой собствен код, за да извикате резервен диалогов прозорец.

Сега SDK автоматично проверява за родното приложение на Facebook. Ако не е инсталиран, се стартира диалоговият прозорец за уеб споделяне:

Но нищо не се случва, когато изтрия FB приложението и се опитам да споделя.
Ето моя код:

            ShareDialog shareDialog = new ShareDialog(this);

            BitmapFactory.Options bmOptions = new BitmapFactory.Options();

            bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

            Bitmap image = BitmapFactory.decodeFile(imagePath, bmOptions);

            SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

            SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

            shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);

РЕДАКТИРАНЕ

Има ли начин да споделите снимка във facebook без инсталирано приложение facebook?


person filipst    schedule 08.04.2015    source източник
comment
получихте ли някаква грешка? проверете вашия logcat, след като изпълните този код   -  person Heshan Sandeepa    schedule 08.04.2015
comment
Нищо не получавам. Без грешки.   -  person filipst    schedule 09.04.2015
comment
здравейте, имаме ли нужда от специално разрешение, за да използваме това? с новия facebook sdk 4.0? @filipst   -  person Rat-a-tat-a-tat Ratatouille    schedule 16.04.2015
comment
Ако използвате Facebook SDK 4.0 и споделяте чрез ShareDialog, нямате нужда от специално разрешение. ShareDialog използва приложението Facebook за Android, за да споделя съдържание на вашата стена. Но ако искате да можете да споделяте, дори ако потребителят няма инсталирано приложение за android facebook, имате нужда от ново разрешение за публикуване. @Rat-a-tat-a-tat Рататуй   -  person filipst    schedule 16.04.2015
comment
@filipst - благодаря, само за да потвърдя, това означава, че ако преобразувам файл с изображение в растерно изображение и използвам приложението Facebook за споделяне, няма да изисквам специално разрешение, нали? Всъщност се опитах да направя това, но след това получих грешка, докато се опитвах да вляза с login с read ..   -  person Rat-a-tat-a-tat Ratatouille    schedule 17.04.2015
comment
Не, не се нуждаете от специални разрешения. Каква грешка получихте? Можете да добавите това, за да проверите дали ShareDialog може да се показва: if (shareDialog.canShow(MainActivity.class)){...} else{//каже на потребителя, че няма приложение за fb}   -  person filipst    schedule 17.04.2015
comment
@filipst, така че с кода във вашия въпрос можете да споделите снимка във Facebook (ако потребителят има FB приложението)? Опитах вашия код, но не мога да го накарам да работи. :/ Щраквам върху бутон за споделяне, но нищо не се случва.   -  person Azurespot    schedule 28.05.2015
comment
@Noni A. Опитайте кода по-долу в отговора.   -  person filipst    schedule 28.05.2015
comment
@filipst, благодаря, опитах, но не се появява диалогов прозорец за споделяне, когато щракна.   -  person Azurespot    schedule 30.05.2015
comment
намерихте ли някакво решение за споделяне на снимката без инсталирано приложение facebook?   -  person prasanthMurugan    schedule 23.01.2017


Отговори (4)


Моля, прочетете внимателно SDK документите. Не можете да споделяте снимка с sharedialog без инсталирано приложение Facebook.

Справка: https://developers.facebook.com/docs/sharing/android

Снимки

Хората могат да споделят снимки от вашето приложение във Facebook с диалоговия прозорец за споделяне или с персонализиран интерфейс.

Снимките трябва да са с размер под 12MB

Хората се нуждаят от инсталирано родно приложение Facebook за Android, версия 7.0 или по-нова

person Hoài Bá Đình    schedule 08.04.2015
comment
Значи няма друг начин да споделите снимка? Ами ако потребителят няма инсталирано FB приложение? - person filipst; 09.04.2015

Намерих решението:

BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

    Bitmap image = BitmapFactory.decodeFile(imagePathForShare, bmOptions);

    SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

    Toast.makeText(getApplicationContext(), getString(R.string.facebook_uploading), Toast.LENGTH_SHORT).show();

    ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result)
        {
            Toast.makeText(getApplicationContext(), getString(R.string.facebookSuccessful), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel()
        {
            Log.v("FACEBOOK_TEST", "share api cancel");
        }

        @Override
        public void onError(FacebookException e)
        {
            Log.v("FACEBOOK_TEST", "share api error " + e);
        }
    });
person filipst    schedule 09.04.2015
comment
но ще ви трябват разрешения за публикуване от потребителя, за да използвате ShareApi - person rod_torres; 28.04.2015
comment
Да, знам. Няма начин да споделяте без Facebook приложение и да не искате разрешения за публикуване. - person filipst; 28.04.2015
comment
Здравей, @filipst, аз това с това решение, споделеният диалогов прозорец няма да бъде представен. Това вярно ли е? - person NamNH; 10.08.2015
comment
намерихте ли някакво решение за споделяне на снимката без инсталирано приложение facebook? - person prasanthMurugan; 23.01.2017

Опитайте тази:

Сблъсквал съм се със същия проблем и мога да кажа, че има някакъв проблем в SharePhotoContent API на facebook. Можете да споделите изображението с помощта на ShareLinkContent.

ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setImageUrl("Your url")
                    .build();
shareDialog.show(linkContent);
person Aniket Dhandhukia    schedule 29.02.2016

Можете да използвате диалоговия прозорец за споделяне, за да споделяте снимки.

Опитайте тази

 Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                    SharePhoto.Builder photoBuilder = new SharePhoto.Builder();
                    photoBuilder.setBitmap(image);
                    photoBuilder.setCaption("HBD Caption");
                    final SharePhoto sharePhoto = photoBuilder.build();
                    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(sharePhoto).build();
                    mShareDialog.show(content);

За да добавите надпис, ще трябва да добавите разрешения за публикуване от facebook. Ако не направите това, вашето изображение ще бъде публикувано без надпис.

Справка: https://developers.facebook.com/docs/graph-api/reference/user/permissions/

person Laraib Azad    schedule 01.12.2016