1

我每个人都在使用CloudRail Android SDK从我的 Android 应用程序使用以下代码在 Facebook 和 Twitter 上发布:

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

我可以发布我的文本,但我想在应用返回显示时显示一个对话框。- 是否有回调或类似的东西来“捕捉”应用程序显示的回报?- 有没有办法拦截postUpdate函数的成功或失败?

4

2 回答 2

1

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();
于 2016-09-12T11:52:05.457 回答
1

这是我的最终解决方案。

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();
    }
}

我还使用了一个处理程序,因为我想显示一个 toast 作为对用户的回调。

于 2016-09-12T13:06:09.177 回答