2016-03-08 81 views
0

我在發佈時使用了不確定進度對話框,但我想用進度條替換它,並使用上傳百分比,就像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 upload progress,但它不適用於當前的Facebook SDK版本。

+0

你可以簡單地顯示一個旋轉圓圈或其他東西,直到你收到成功消息。 SDK中沒有進度指示器。 – lamdadj22

+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); 
      } 
     } 
} 

最後,當你調用發佈方法,你只需要實現publishProgress( INT狀態)以正確的方式:

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); 
       } 
      }); 

我希望能幫助你。