package org.thoughtcrime.securesms.util.dualsim; import android.content.Context; import android.os.Build; import android.support.annotation.NonNull; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import org.whispersystems.libsignal.util.guava.Optional; import java.util.LinkedList; import java.util.List; public class SubscriptionManagerCompat { private final Context context; public SubscriptionManagerCompat(Context context) { this.context = context.getApplicationContext(); } public Optional<Integer> getPreferredSubscriptionId() { if (Build.VERSION.SDK_INT < 24) { return Optional.absent(); } return Optional.of(SubscriptionManager.getDefaultSmsSubscriptionId()); } public Optional<SubscriptionInfoCompat> getActiveSubscriptionInfo(int subscriptionId) { if (Build.VERSION.SDK_INT < 22) { return Optional.absent(); } SubscriptionInfo subscriptionInfo = SubscriptionManager.from(context).getActiveSubscriptionInfo(subscriptionId); if (subscriptionInfo != null) { return Optional.of(new SubscriptionInfoCompat(subscriptionId, subscriptionInfo.getDisplayName(), subscriptionInfo.getMcc(), subscriptionInfo.getMnc())); } else { return Optional.absent(); } } public @NonNull List<SubscriptionInfoCompat> getActiveSubscriptionInfoList() { if (Build.VERSION.SDK_INT < 22) { return new LinkedList<>(); } List<SubscriptionInfo> subscriptionInfos = SubscriptionManager.from(context).getActiveSubscriptionInfoList(); if (subscriptionInfos == null || subscriptionInfos.isEmpty()) { return new LinkedList<>(); } List<SubscriptionInfoCompat> compatList = new LinkedList<>(); for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { compatList.add(new SubscriptionInfoCompat(subscriptionInfo.getSubscriptionId(), subscriptionInfo.getDisplayName(), subscriptionInfo.getMcc(), subscriptionInfo.getMnc())); } return compatList; } }