Merge "Provide all active subscriptions when register default app providers."

This commit is contained in:
Grace Jia
2021-05-04 03:24:31 +00:00
committed by Gerrit Code Review

View File

@@ -31,6 +31,7 @@ import android.telecom.DefaultDialerManager;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.util.IntArray;
import android.util.Slog;
@@ -44,6 +45,9 @@ import com.android.server.SystemService;
import com.android.server.pm.UserManagerService;
import com.android.server.pm.permission.PermissionManagerServiceInternal;
import java.util.ArrayList;
import java.util.List;
/**
* Starts the telecom component by binding to its ITelecomService implementation. Telecom is setup
* to run in the system-server process so once it is loaded into memory it will stay running.
@@ -208,13 +212,23 @@ public class TelecomLoaderService extends SystemService {
return null;
}
}
SubscriptionManager subscriptionManager =
mContext.getSystemService(SubscriptionManager.class);
if (subscriptionManager == null) {
return null;
}
TelecomManager telecomManager =
(TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
PhoneAccountHandle phoneAccount = telecomManager.getSimCallManager(userId);
if (phoneAccount != null) {
return new String[]{phoneAccount.getComponentName().getPackageName()};
List<String> packages = new ArrayList<>();
int[] subIds = subscriptionManager.getActiveSubscriptionIdList();
for (int subId : subIds) {
PhoneAccountHandle phoneAccount =
telecomManager.getSimCallManagerForSubscription(subId);
if (phoneAccount != null) {
packages.add(phoneAccount.getComponentName().getPackageName());
}
}
return null;
return packages.toArray(new String[] {});
});
}