From 615ebb9dd6a1a3da6c70f6bb1ab3b6887c537913 Mon Sep 17 00:00:00 2001 From: Taesu Lee Date: Mon, 22 Jun 2020 15:18:24 +0900 Subject: [PATCH] Fix SecurityException at getActiveSubscriptionInfoList() on N and O Creating ConnectivityUtil instances after checking the minimum set of permissions since SubscriptionManager#getActiveSubscriptionInfoList() requires READ_PHONE_STATE and users can revoke the permission. On P and beyond, the subscription list will be filtered instead when no permission. Bug: 159421050 Test: Manual Signed-off-by: Taesu Lee Change-Id: Iafc3c57060e1893a91e629b1b3e3ba9ad78967cb --- .../android/messaging/datamodel/DataModelImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/android/messaging/datamodel/DataModelImpl.java b/src/com/android/messaging/datamodel/DataModelImpl.java index bbb695b..ddb17ff 100644 --- a/src/com/android/messaging/datamodel/DataModelImpl.java +++ b/src/com/android/messaging/datamodel/DataModelImpl.java @@ -79,11 +79,6 @@ public class DataModelImpl extends DataModel { mDataModelWorker = new BackgroundWorker(); mDatabaseHelper = DatabaseHelper.getInstance(context); mSyncManager = new SyncManager(); - if (OsUtil.isAtLeastN()) { - createConnectivityUtilForEachActiveSubscription(); - } else { - sConnectivityUtilInstanceCachePreN = new ConnectivityUtil(context); - } } @Override @@ -219,6 +214,12 @@ public class DataModelImpl extends DataModel { @Override public void onApplicationCreated() { + if (OsUtil.isAtLeastN()) { + createConnectivityUtilForEachActiveSubscription(); + } else { + sConnectivityUtilInstanceCachePreN = new ConnectivityUtil(mContext); + } + FixupMessageStatusOnStartupAction.fixupMessageStatus(); ProcessPendingMessagesAction.processFirstPendingMessage(); SyncManager.immediateSync();