2014-03-07 58 views
0

我已經實現了一個SyncAdapter,就像這裏所描述的(使用一個虛擬帳戶)並使用我的一個內容提供者(每個表有一個)。據我可以告訴同步代碼是好的。如果我進入「設置 - >帳戶」,選擇我創建的虛擬帳戶,然後選擇我的適配器由系統運行的「立即同步」菜單項。它所做的就是記錄它被調用的事實。立即運行我的Android SyncAdapter。

但試圖從我自己的「立即同步」菜單選項運行它(請參閱下面的主要活動)不會。如果我們有WiFi連接,是否有辦法讓同步適配器立即運行?

private boolean actionSynchronize() { 
    if (mLogger.isTraceEnabled()) 
     mLogger.trace("Synchronising now!"); 

    // Pass the settings flags by inserting them in a bundle 
    Bundle settingsBundle = new Bundle(); 
    settingsBundle.putBoolean(
      ContentResolver.SYNC_EXTRAS_MANUAL, true); 
    settingsBundle.putBoolean(
      ContentResolver.SYNC_EXTRAS_EXPEDITED, true); 
    /* 
    * Request the sync for the default account, authority, and 
    * manual sync settings 
    */ 
    ContentResolver.requestSync(mAccount, AUTHORITY, settingsBundle); 
    return true; 
} 

回答

0

請與此嘗試。

Bundle b = new Bundle(); 
    // Disable sync backoff and ignore sync preferences. In other words...perform sync NOW! 
    b.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true); 
    b.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true); 
    ContentResolver.requestSync(
      GenericAccountService.GetAccount(),  // Sync account 
      FeedContract.CONTENT_AUTHORITY, // Content authority 
      b);          // Extras