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 <taesu82.lee@samsung.com>
Change-Id: Iafc3c57060e1893a91e629b1b3e3ba9ad78967cb
This commit is contained in:
Taesu Lee
2020-06-22 15:18:24 +09:00
parent 7f4bb54ece
commit 615ebb9dd6

View File

@@ -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();