我在发布时使用不确定进度对话框,但我想用进度条替换它,上传百分比,就像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);
}
});
我希望对您有所帮助。