Обратный звонок на postUpdate с Facebook и Twitter с использованием CloudRail

Все я использую CloudRail Android SDK для публикации на Facebook и Twitter из моего приложения для Android, используя этот код:

final Social facebook = new Facebook(getContext(),"xxxxxx","xxxxxx");
new Thread() {
    @Override
    public void run() {
        Log.i("SHARE","Condivido: " + testoCondivisione);
        facebook.postUpdate(testoCondivisione);
    }
}.start();

И я могу опубликовать свой текст, но я хочу отобразить диалог, когда приложение вернется на дисплей. - Есть ли обратный вызов или что-то вроде этого, чтобы "поймать" возврат на дисплее приложения? - Есть ли способ перехватить успех или неудачу функции postUpdate?

2 ответа

CloudRail Android SDK работает синхронно, поэтому обратных вызовов нет. Это также, почему некоторые формы потоков должны использоваться, как вы уже правильно делаете. Вы можете просто поместить код, который хотите выполнить после успешной публикации, за этим вызовом метода. Ошибки могут быть обнаружены с помощью try-catch. Например:

final Social facebook = new Facebook(getContext(),"xxxxxx","xxxxxx");
new Thread() {
    @Override
    public void run() {
        Log.i("SHARE","Condivido: " + testoCondivisione);
        try {
            facebook.postUpdate(testoCondivisione);
        } catch (Exeption e) {
            // Handle potential errors
        }
        Log.i("SHARE", "Post successful"); // Will be executed after a successful post
    }
}.start();

Это мое окончательное решение.

public void shareViaFacebook(String text){
    final String textSocial = text;
    final Handler handler = new Handler(Looper.getMainLooper());

    Log.i("SHARE","Facebook");
    CloudRail.setAppKey("xxxxx");
    final Social facebook = new Facebook(getContext(),"xxxxx","xxxx");
    new Thread() {
        @Override
        public void run() {
            Log.i("SHARE","Condivido: " + textSocial);
            Boolean isEccezione = false;
            try {
                facebook.postUpdate(textSocial);
            } catch (Exception e) {
                Log.i("ECCEZIONE-FACEBOOK",e.toString());
                isEccezione = true;
            }

            //Controllo se c'è stata una eccezione
            if(isEccezione){
                handler.postDelayed(new Runnable() {
                    public void run() {
                        displayMessaggioCondivisione(false);
                    }
                },10);
            } else {
                Log.i("SHARE", "Post successful"); // Will be executed after a successful post
                handler.postDelayed(new Runnable() {
                    public void run() {
                        displayMessaggioCondivisione(true);
                    }
                },10);
            }
        }
    }.start();
}

private void displayMessaggioCondivisione(Boolean resp){
    if(resp){
        //Print Toast or open dialog
        Toast.makeText(getContext(),R.string.condivisione_social_ok,Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(getContext(),R.string.condivisione_social_ko,Toast.LENGTH_LONG).show();
    }
}

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

Другие вопросы по тегам