From d69b23c8d3939461e8ab7bc39ff69a61bc48f4b9 Mon Sep 17 00:00:00 2001 From: Dmitry Dementyev Date: Tue, 11 Jul 2023 16:06:36 -0700 Subject: [PATCH] Ignore SQLite exceptions in AccountManager onPackageAdded Callback is used to dismiss rarely used notification if account becomes visible after app update - b/79918517 Bug: 289131456 Test: N/A Change-Id: I775c53b3c7663bda218125748dc76f1f1c242f7f --- .../accounts/AccountManagerService.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index f4c8a570b5663..146215b211d33 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -357,15 +357,25 @@ public class AccountManagerService @Override public void onPackageAdded(String packageName, int uid) { // Called on a handler, and running as the system - UserAccounts accounts = getUserAccounts(UserHandle.getUserId(uid)); - cancelAccountAccessRequestNotificationIfNeeded(uid, true, accounts); + try { + UserAccounts accounts = getUserAccounts(UserHandle.getUserId(uid)); + cancelAccountAccessRequestNotificationIfNeeded(uid, true, accounts); + } catch (SQLiteCantOpenDatabaseException e) { + Log.w(TAG, "Can't read accounts database", e); + return; + } } @Override public void onPackageUpdateFinished(String packageName, int uid) { // Called on a handler, and running as the system - UserAccounts accounts = getUserAccounts(UserHandle.getUserId(uid)); - cancelAccountAccessRequestNotificationIfNeeded(uid, true, accounts); + try { + UserAccounts accounts = getUserAccounts(UserHandle.getUserId(uid)); + cancelAccountAccessRequestNotificationIfNeeded(uid, true, accounts); + } catch (SQLiteCantOpenDatabaseException e) { + Log.w(TAG, "Can't read accounts database", e); + return; + } } }.register(mContext, mHandler.getLooper(), UserHandle.ALL, true); @@ -391,6 +401,9 @@ public class AccountManagerService } } catch (NameNotFoundException e) { /* ignore */ + } catch (SQLiteCantOpenDatabaseException e) { + Log.w(TAG, "Can't read accounts database", e); + return; } } });