title: Google Drive API for android requestSync always returns "sync request limit exceeded"
body: <p>I am using google drive api for android to access files in google drive. When a new file is uploaded it takes anywhere from 3 to 15 minutes for the file to be accessible by my app. I tried to add requestSync to occasionally force a sync but every time I run it I get "sync request limit exceeded". Is there something that can be causing me to hit the limit already, or is there a different issue?</p>
  
  <p>RequestSync portion of code: </p>
  
  <pre><code>Drive.DriveApi.requestSync(getGoogleApiClient()).setResultCallback(syncCallback);
  
  final private  ResultCallback&lt;com.google.android.gms.common.api.Status&gt; syncCallback = new ResultCallback&lt;com.google.android.gms.common.api.Status&gt;() {
      @Override
      public void onResult(Status status) {
          if (!status.getStatus().isSuccess()) {
              showMessage(status.toString());
          } else {
              showMessage("updated");
          }
      }
  };
  </code></pre>
  
  <p>Full class:</p>
  
  <pre><code>public class SD_UAV_TEST_RESULTS extends SD_UAV_TEST_MAIN {
  
  TextView numberOfCows_text,picsProcessed_text;
  public static int previousCount = 0;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_sd__uav__test__results);
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
  
      numberOfCows_text = (TextView) findViewById(R.id.numberOfCows);
      picsProcessed_text = (TextView) findViewById(R.id.picsProcessed);
  }
  
  
  public void refreshResults(View view)
  {
      getContnets();
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if (requestCode == 1) {
          String temp = data.getStringExtra("parse");
          String[] lines = temp.split(":");
          int cow_count = 0;
  
          for(int i=0;i&lt;lines.length;i++)
          {
              cow_count += Integer.parseInt(lines[i].split(",")[1]);
          }
  
          numberOfCows_text.setText(Integer.toString(cow_count));
          picsProcessed_text.setText(Integer.toString(lines.length));
  
      }
      if (requestCode == 8) {
  
      }
  }
  
  public void getContnets(){
      if(file_id != null) {
          Drive.DriveApi.fetchDriveId(getGoogleApiClient(), file_id)
                  .setResultCallback(idCallback);
      }
  }
  public void parseFileRead(String temp)
  {
      String[] lines = temp.split(":");
      int cow_count = 0;
  
      for(int i=0;i&lt;lines.length;i++)
      {
          cow_count += Integer.parseInt(lines[i].split(",")[1]);
      }
  
      if(lines.length == previousCount)
      {
          fnfCount = fnfCount + 1;
      }
      if(fnfCount &gt;= 5)
      {
          Drive.DriveApi.requestSync(getGoogleApiClient()).setResultCallback(syncCallback);
          fnfCount = 0;
      }
      numberOfCows_text.setText(Integer.toString(cow_count));
      picsProcessed_text.setText(Integer.toString(lines.length));
      previousCount = lines.length;
  }
  
  
  final private  ResultCallback&lt;com.google.android.gms.common.api.Status&gt; syncCallback = new ResultCallback&lt;com.google.android.gms.common.api.Status&gt;() {
      @Override
      public void onResult(Status status) {
          if (!status.getStatus().isSuccess()) {
              showMessage(status.toString());
          } else {
              showMessage("updated");
          }
      }
  };
  
  
  //----------------------------------------------------------------------------------------------
  
  final private ResultCallback&lt;DriveApi.DriveIdResult&gt; idCallback = new ResultCallback&lt;DriveApi.DriveIdResult&gt;() {
      @Override
      public void onResult(DriveApi.DriveIdResult result) {
          DriveId temp = result.getDriveId();
          new RetrieveDriveFileContentsAsyncTask(
                  SD_UAV_TEST_RESULTS.this).execute(temp);
      }
  };
  
  final private class RetrieveDriveFileContentsAsyncTask
          extends ApiClientAsyncTask&lt;DriveId, Boolean, String&gt; {
  
      public RetrieveDriveFileContentsAsyncTask(Context context) {
          super(context);
      }
  
      @Override
      protected String doInBackgroundConnected(DriveId... params) {
          String contents = null;
          DriveFile file = params[0].asDriveFile();
  
          DriveApi.DriveContentsResult driveContentsResult =
                  file.open(getGoogleApiClient(), DriveFile.MODE_READ_ONLY, null).await();
          if (!driveContentsResult.getStatus().isSuccess()) {
              return null;
          }
          DriveContents driveContents = driveContentsResult.getDriveContents();
          BufferedReader reader = new BufferedReader(
                  new InputStreamReader(driveContents.getInputStream()));
          StringBuilder builder = new StringBuilder();
          String line;
          try {
              while ((line = reader.readLine()) != null) {
                  builder.append(line);
              }
              contents = builder.toString();
          } catch (IOException e) {
          }
  
          driveContents.discard(getGoogleApiClient());
          return contents;
      }
  
      @Override
      protected void onPostExecute(String result) {
          super.onPostExecute(result);
          if (result == null) {
              showMessage("Error while reading from the file");
              return;
          }
          parseFileRead(result);
      }
  }
  </code></pre>
  
  <p>}</p>