From 1422d95ccf2d908f487b88062483faa99554df15 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Fri, 21 Apr 2017 21:04:24 +0100 Subject: [PATCH] Disallow user removal of address book accounts We don't want users to remove address books on their own, we want to control these automatically. This commit blocks it. --- .../etesync/syncadapter/resource/LocalAddressBook.java | 7 ++++++- .../syncadapter/syncadapter/NullAuthenticatorService.java | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/etesync/syncadapter/resource/LocalAddressBook.java b/app/src/main/java/com/etesync/syncadapter/resource/LocalAddressBook.java index b0aaf092..5b59326c 100644 --- a/app/src/main/java/com/etesync/syncadapter/resource/LocalAddressBook.java +++ b/app/src/main/java/com/etesync/syncadapter/resource/LocalAddressBook.java @@ -128,7 +128,12 @@ public class LocalAddressBook extends AndroidAddressBook implements LocalCollect public void delete() { AccountManager accountManager = AccountManager.get(context); - accountManager.removeAccount(account, null, null); + if (Build.VERSION.SDK_INT >= + Build.VERSION_CODES.LOLLIPOP_MR1) { + accountManager.removeAccountExplicitly(account); + } else { + accountManager.removeAccount(account, null, null); + } } public LocalAddressBook(Context context, Account account, ContentProviderClient provider) { diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/NullAuthenticatorService.java b/app/src/main/java/com/etesync/syncadapter/syncadapter/NullAuthenticatorService.java index e85852cc..ee1fc9b3 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/NullAuthenticatorService.java +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/NullAuthenticatorService.java @@ -11,6 +11,7 @@ package com.etesync.syncadapter.syncadapter; import android.accounts.AbstractAccountAuthenticator; import android.accounts.Account; import android.accounts.AccountAuthenticatorResponse; +import android.accounts.AccountManager; import android.accounts.NetworkErrorException; import android.app.Service; import android.content.Context; @@ -78,6 +79,13 @@ public class NullAuthenticatorService extends Service { return null; } + @Override + public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) { + Bundle result = new Bundle(); + boolean allowed = false; // we don't want users to explicitly delete inner accounts + result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, allowed); + return result; + } } } \ No newline at end of file