使用进度条在Facebook上发布照片



我在发布时使用不确定进度对话框,但我想用进度条替换它,上传百分比,就像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上传进度,但它在当前的Facebook SDK版本上不可用。

好吧,

您没有使用 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);
           } 
      }
 }

最后当你调用发布方法时,你只需要以正确的方式实现 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);
                 }
             });

我希望对您有所帮助。

最新更新