【问题标题】:Publish Photo on Facebook with Progress bar使用进度条在 Facebook 上发布照片
【发布时间】:2016-03-08 10:08:01
【问题描述】:

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

【问题讨论】:

  • 您可以简单地显示一个旋转的圆圈或其他东西,直到您收到成功消息。 SDK 中没有进度指示器。
  • 我已经在使用 Indeterminate Progress 但我想要上传百分比的进度

标签: android facebook android-simple-facebook


【解决方案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);
                 }
             });

希望能帮到你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多