Есть ли способ подтвердить, было ли намерение поделиться в Android успешным или неудачным? (Например, если я делюсь публикацией в Facebook, я хотел бы знать, была ли она успешно опубликована, или знать, была ли она отменена.)

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

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, body);    
activity.startActivity(Intent.createChooser(shareIntent, title));
9
code 2 Дек 2014 в 06:10
Зачем вам знать, поделился ли пользователь этим?
 – 
WizKid
2 Дек 2014 в 06:50
Это для отслеживания действий пользователей
 – 
code
2 Дек 2014 в 07:11
Вы знаете, что вам не разрешено стимулировать акцию? И что вам не разрешено предварительно заполнять параметр сообщения?
 – 
WizKid
2 Дек 2014 в 07:32
1
Я создаю намерение общего доступа, используя внешний URL-адрес, и я искал решение для удаления изображения, которое создается после успешного намерения общего доступа.
 – 
onexf
9 Авг 2017 в 14:05
Facebook может загрузить его позже.
 – 
WizKid
10 Авг 2017 в 19:32

2 ответа

Лучший ответ

Лично я собирался сказать «используйте startActivityForResult()» и проверьте, что возвращается. Однако, как вы можете узнать больше здесь, все не так просто. Если намерение отменяется пользователем, возвращается тот же номер, как если бы намерение было выполнено (для большинства приложений).

В конечном счете, в настоящее время для более простого общего намерения «Поделиться» вы не можете проверить, было ли оно успешным или нет.

14
Community 23 Май 2017 в 15:26
Спасибо за ответ MDragon. Если я хочу специально использовать Facebook/Twitter/электронную почту для намерения поделиться, как я могу подтвердить, что обмен был успешным?
 – 
code
2 Дек 2014 в 06:33
Для общих намерений общего доступа вам придется протестировать все три из них и посмотреть, что они возвращают в случае успеха и отмены. Твиттер по крайней мере работает, а что касается Фейсбука, то я сомневаюсь.
 – 
DragonJawad
2 Дек 2014 в 08:21
Теперь это гипотеза и выходит за рамки этого вопроса, но «конкретные намерения» могут сработать. Однако какие конкретные намерения/действия связаны с API-интерфейсами Facebook+Twitter(+Email?), а затем возвращают значение в случае успеха или неудачи? Другими словами, есть вероятность, что если вы хотите знать, успешны ли они, вам придется справиться с этим самостоятельно. Однако, если для этих целей уже существуют конкретные намерения (или действия), используйте их.
 – 
DragonJawad
2 Дек 2014 в 08:24
1
Я хочу вызвать API после успешного общего доступа пользователя. так что я делаю? Пожалуйста помоги.
 – 
Ganpat Kaliya
5 Май 2017 в 08:33

В случае FacebookShareDialog Создайте свой диалог с помощью requestCode, затем onActivity проверьте код запроса и код результата. Для этого есть один класс в Facebook Sdk Name UiLifecycleHelper

В методе onCreate

uiHelper = new UiLifecycleHelper(this, null);
uiHelper.onCreate(savedInstanceState);




 FacebookDialog fbShardialog = new FacebookDialog.ShareDialogBuilder(
                        MainActivity.this)
                        .setLink("http://www.claro.com.ar/")
                        .setPicture("imagepath").setRequestCode(12)
                        .build();

                uiHelper.trackPendingDialogCall(fbShardialog.present());



OnActivityResult


 if (requestCode == 12) {
        if (resultCode == RESULT_OK) {
            //  show sucess message

        }
 else
//show failure message

    }
1
Nazik 13 Май 2015 в 10:15
Этот класс больше не доступен в самой последней версии SDK.
 – 
JohnK
20 Авг 2016 в 20:23