2017-05-31 98 views
1

我已經構建了一個應用程序,需要將2000個聯繫人導出到原生Android聯繫人。我使用contentresolver.applyBatch來做到這一點,但如果用戶註銷,我想刪除所有導出的聯繫人的應用程序。內容分解者可能會發生未完全保存聯繫人的情況。如何取消contentresolver applyBatch?

我的問題:

我怎樣才能取消以下opperation?:

resolver.applyBatch(ContactsContract.AUTHORITY, ops); 

我試過到目前爲止:

我試圖取消contentresolver的同步像這樣:

ContentResolver.cancelSync(null, ContactsContract.AUTHORITY); 

這不起作用,我也不確定空值。它表示需要一個帳戶才能停止同步。但是我並未開始在特定帳戶上進行同步,因此爲什麼需要這樣做?

我需要什麼?

類似resolver.stopBatch(一種停止應用批處理的方法)。

謝謝你所有的努力閱讀此。

回答

1

如果我瞭解用例,當用戶登錄到您的應用程序時,您正在同步RawContacts到設備中。

如果是這種情況,您應該創建一個SyncProvider,並在與您的應用和軟件包名稱綁定的帳戶的RawContacts中進行同步。 這樣,當用戶卸載您的應用程序時,該帳戶會自動與您已同步到設備中的數據一起刪除,並且當用戶註銷她的帳戶時,您只需以編程方式刪除聯繫人帳戶,這也將刪除所有數據同步到設備。

瞭解如何創建一個聯繫人帳戶,一個SyncProvider這些教程,並用它來同步您的帳戶中的聯繫人:

+0

我花了一些時間閱讀所有這些鏈接,但RawContacts的創建工作如何在同步適配器中工作?仍然使用ContentResolver? – jobbert

+0

是的,把東西放在數據庫中是一樣的,只要確保新的RawContacts的account_type和account_name的值屬於你自己創建的帳戶 – marmor

+0

我正在定義它將要查看它。它仍然與我的感覺相抵觸,因爲我覺得爲此創建一個帳戶很奇怪。但我想我明確需要一個SyncService,正如我在教程中閱讀的那樣,您需要一個帳戶。謝謝你的回答,我會讓你知道如果,當我成功:)。 – jobbert