2017-03-17 9 views
1

多くのファイルをドライブにアップロードできますが、タスクの完了時期はわかりません。 結果コールバックで私は大丈夫ですが、インターネット接続を閉じると、タスクが中断されます。Android - GoogleドライブApi:アップロードタスクが完了したときを知る方法を教えてください。

私はそれがすべてのファイルがすでにクラウドにアップロードされていることを確認します時に知りたい
void createFile(DriveFolder pFldr, final String titl, final String mime, final File file) { 
    DriveId dId = null; 
    setProgressing(true); 
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected() && titl != null && mime != null && file != null) try { 

     final DriveFolder parent = pFldr != null ? pFldr : Drive.DriveApi.getRootFolder(mGoogleApiClient); 

     Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() { 
      @Override public void onResult(DriveApi.DriveContentsResult driveContentsResult) { 
       DriveContents cont = driveContentsResult != null && driveContentsResult.getStatus().isSuccess() ? 
         driveContentsResult.getDriveContents() : null; 
       if (cont != null) try { 
        OutputStream oos = cont.getOutputStream(); 
        if (oos != null) try { 
         InputStream is = new FileInputStream(file); 
         byte[] buf = new byte[4096]; 
         int c; 
         while ((c = is.read(buf, 0, buf.length)) > 0) { 
          oos.write(buf, 0, c); 
          oos.flush(); 
         } 
        } 
        finally { oos.close();} 

        MetadataChangeSet meta = new MetadataChangeSet.Builder().setTitle(titl).setMimeType(mime).build(); 

        parent.createFile(mGoogleApiClient, meta, cont).setResultCallback(new ResultCallback<DriveFolder.DriveFileResult>() { 
         @Override public void onResult(DriveFolder.DriveFileResult driveFileResult) { 
          DriveFile dFil = driveFileResult != null && driveFileResult.getStatus().isSuccess() ? 
            driveFileResult.getDriveFile() : null; 
          if (dFil != null) { 
           Log.d(TAG,"photo "+count+" uploaded"); 
           count --; 
           if(count == 0){ 
            // is the task completed? 
           } 

          } else { 
           Log.d(TAG,"error during upload photo " + count); 
          } 
         } 
        }); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        ShowErrorHelper.showErrorDialog(UploadActivity.this, e); 
       } 
      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     ShowErrorHelper.showErrorDialog(UploadActivity.this, e); 
    } 
} 

(私はローカルにそれらを削除することができます):これは私が使用しているコードです。

答えて

0

GoogleドライブAndroid APIを使用しています。すべてのドライブGDAAで作成したファイルは、デバイス上に作成されます。それらが作成されるとすぐに、元のファイルを削除することができます。その後、GDAAはドライブファイルをクラウドと同期させます。この最後の側面はあなたには見えず、無視することができます。

+0

私はファイルを削除することができますので、ありがとう!しかし、ファイルが既にクラウドにあることを確認する方法はありませんか?たとえば、タスクが完了するまでインターネット接続を開いたままにします。 問題は、ユーザーが接続を閉じて翌日を再開した場合、クラウド内のファイルを表示するために1日待たなければならず、ほとんどリアルタイムでアクセスする必要があるということです。 – user2044083

+0

そのレベルのリアルタイムで確定的な振る舞いが必要な場合は、GDAAの使用をやめ、REST APIに切り替えます。 – pinoyyid

関連する問題