0

我在发布时使用了一个不确定的进度对话框,但我想用一个进度条替换它,上面有上传百分比,就像 Facebook 正在做的那样。

我使用android-simple-facebook了库,但我也可以使用本机 Facebook SDK,如果它可以满足我的要求。

这是我的代码:

    public void publish(final Photo photo, OnPublishListener onPublishListener) {
    this.onPublisherListener = onPublishListener;
    isPublish = true;
    if (!simpleFacebook.isLogin())
        simpleFacebook.login(this);
    else {
        if (isPermissionAllowed("publish_actions")) {
            isPublish = false;
            if (photo != null)
                simpleFacebook.publish(photo, false, onPublishListener);
        } else {
            requestUserPhotosPermissionAndPublish(photo, onPublishListener);
        }
    }
}

和我的OnPublishListener

new OnPublishListener() {
    @Override
    public void onComplete(String response) {
           super.onComplete(response);
                }

    @Override
    public void onException(Throwable throwable) {
    super.onException(throwable);

    }

    @Override
    public void onFail(String reason) {
    super.onFail(reason);

    }
  }

这里还有一个解决方案facebook upload progress,但在当前的 Facebook SDK 版本上不可用。

4

1 回答 1

1

好吧,您没有使用 OnPublishListener 对象来有效地发布进度。您可以通过这种方式简单地重构您的代码: 创建一个接口:

 IPublishProgress {
     void publishProgress(int status);
 }

然后以这种方式重构发布:

public void publish(final Photo photo, IPublishProgress iPublishProgress) {
      iPublishProgress.publishProgress(1);
      //some stuff
      if (!simpleFacebook.isLogin())
           simpleFacebook.login(this);
      else {
           if (isPermissionAllowed("publish_actions")) {
                isPublish = false;
                iPublishProgress.publishProgress(2);
                if (photo != null)
                     simpleFacebook.publish(photo, false, onPublishListener);
                     iPublishProgress.publishProgress(3);
           } 
      }
 }

最后调用publish方法时,只需要正确实现publishProgress(int status)即可:

publish(photo, new IPublishProgress() {
            @Override
            public void publishMessage(final int status) {
                switch (status) {
                    case 1:
                       //do some stuff;
                       break;
                    case 2:
                       //do some stuff;
                       break;
                    case 3:
                       //do some stuff;
                       break;
                    //otherwiseyou can just do progressBar.setProgressBar(status);
                 }
             });

我希望能帮助你。

于 2016-05-13T21:33:09.117 回答