我在发布时使用了一个Indeterminate进度对话框,但我想用进度条替换它,上传百分比,就像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版本不提供此解决方案。
答案 0 :(得分: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);
}
});
我希望能帮助你。