2011-04-21 16 views
14

Kullanıcı, ayarları uygulamasında kullanıcı hesabı Accounts & sync bölümünden manuel olarak kaldırdığında uygulamanın verilerini silmek istiyorum.Hesabı kaldırma hakkındaki verileri temizleme

Kendi uyguladığım AbstractAccountAuthenticator var, ancak hesap işlemini kaldırmaya yönelik bir yöntem yok. Herhangi bir ipucu?

+0

Herhangi bir kullanım olup olmadığından emin değil, ACTION_UID_REMOVED yayın eylemine baktınız mı? – Squonk

cevap

18

Aynı problem üzerinde durdum ve karar verdiğim "çözüm". Bu "doğru" çözümü olarak adlandırdığım şey değil ama mevcut API ile yönetebileceğinize inanıyorum.

@Override 
public Bundle getAccountRemovalAllowed(
     AccountAuthenticatorResponse response, Account account) 
     throws NetworkErrorException { 
    Bundle result = super.getAccountRemovalAllowed(response, account); 

    if (result != null && result.containsKey(AccountManager.KEY_BOOLEAN_RESULT) 
      && !result.containsKey(AccountManager.KEY_INTENT)) { 
     final boolean removalAllowed = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); 

     if (removalAllowed) { 
      // Do my removal stuff here 
     } 
    } 

    return result; 
} 

Eğer getAccountRemovalAllowed dönmek SONRA kaldırma başarısız olabilir küçücük bir şans var ama (IMHO) ihmal edilebilir olduğunu şu şekildedir: AbstractAccountAuthenticator sınıfının benim uygulamasında

, ben getAccountRemovalAllowed fonksiyonunu değiştirileceğini ettik. MisterSquonk olarak

sen (ACCOUNTS_CHANGED_INTENT) dinlemek olabilir ama, bir hesap değiştiğinde ne yazık ki, yayın, ve bir hesap değil sadece zaman silinmiş bir Niyet de öne sürdü.

Bunun neden SDK'nın bir parçası olmadığını anlamıyorum, ancak ikimiz de açık bir şeyi kaçırdık! Şimdilik, hesabımdaki silme işleminde bazı veritabanı tablolarını silmem gerektiğinden bu yaklaşıma bağlı kalıyorum.

Umarım bu yardımcı olur.

İlgili konular