2012-03-23 16 views
7

Pracuję nad aplikacją, która ma adapter synchronizacji i wystawcę uwierzytelnień służącą do dodawania kont za pośrednictwem Menedżera konta Android. Mam dwa następujące problemy:Czy można zastąpić funkcję Konta i synchronizacja "Usuń konto"

1) Możliwe było nadpisanie funkcji przycisku "Dodaj konto" w Kontach & Synchronizacja, ale nie mogę znaleźć sposobu na zastąpienie funkcji przycisku "Usuń konto" - czy to możliwe?

2) Czytałem, że wystawcy mogą zapobiec usunięciu kont, ale nie mogę się dowiedzieć, jak ... Czy ktoś wie, w jaki sposób mogę dodać to do mojego wystawcy? W ten sposób mógłbym użyć AbstractAccoutnAuthenticator.getAccountRemovalAllowed, aby osiągnąć pożądaną funkcjonalność.

Dzięki

Odpowiedz

7

Aby odpowiedzieć na drugie pytanie:

Zakładając, że nazwa pakietu jest com.companyname

Utwórz klasę Authenticator, która rozciąga AbstractAccountAuthenticator w com.companyname.auth pakietu i wdrożenie tej metody na niej:

@Override 
public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) { 
    Bundle result = new Bundle(); 
    boolean allowed = false; // or whatever logic you want here 
    result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, allowed); 
    return result; 
} 

Dodaj do tego manifestu:

(Należy zwrócić uwagę, że kłódka ostrzega, że ​​wyeksportowana usługa nie wymaga uprawnień).

A potem w res/xml dodać plik authenticator.xml:

<?xml version="1.0" encoding="utf-8"?> 
<account-authenticator 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:accountType="com.companyname" 
android:icon="@drawable/app_icon" 
android:smallIcon="@drawable/app_icon_small" 
android:label="@string/app_name" /> 

Zakładając, że Twój typ konta jest "com.companyname". Tak właśnie robimy i wygląda na to, że działa od API 8 w górę.

1

Poprzedni użytkownik ma rację. Jednak nie ma sposobu na dostosowanie okna dialogowego (dokumentacja leży i mówi, że możesz zwrócić intencję niestandardowego ekranu, który oczywiście nie jest zaimplementowany w kodzie).

Zwracanie wartości false NIE jest zalecane. Ponieważ zwraca okno dialogowe, które mówi coś bardzo przerażającego dla użytkownika (coś wzdłuż linii, które trzeba zrobić, aby przywrócić ustawienia fabryczne)

Powiązane problemy