|
|
@ -3,15 +3,18 @@ package org.thoughtcrime.securesms.util.dualsim;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.os.Build;
|
|
|
|
import android.os.Build;
|
|
|
|
import android.support.annotation.NonNull;
|
|
|
|
import android.support.annotation.NonNull;
|
|
|
|
|
|
|
|
import android.support.annotation.RequiresApi;
|
|
|
|
import android.telephony.SubscriptionInfo;
|
|
|
|
import android.telephony.SubscriptionInfo;
|
|
|
|
import android.telephony.SubscriptionManager;
|
|
|
|
import android.telephony.SubscriptionManager;
|
|
|
|
|
|
|
|
import android.telephony.TelephonyManager;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.util.ServiceUtil;
|
|
|
|
import org.whispersystems.libsignal.util.guava.Optional;
|
|
|
|
import org.whispersystems.libsignal.util.guava.Optional;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
public class SubscriptionManagerCompat {
|
|
|
|
public final class SubscriptionManagerCompat {
|
|
|
|
|
|
|
|
|
|
|
|
private final Context context;
|
|
|
|
private final Context context;
|
|
|
|
|
|
|
|
|
|
|
@ -32,7 +35,7 @@ public class SubscriptionManagerCompat {
|
|
|
|
return Optional.absent();
|
|
|
|
return Optional.absent();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SubscriptionInfo subscriptionInfo = SubscriptionManager.from(context).getActiveSubscriptionInfo(subscriptionId);
|
|
|
|
SubscriptionInfo subscriptionInfo = getSubscriptionManager().getActiveSubscriptionInfo(subscriptionId);
|
|
|
|
|
|
|
|
|
|
|
|
if (subscriptionInfo != null) {
|
|
|
|
if (subscriptionInfo != null) {
|
|
|
|
return Optional.of(new SubscriptionInfoCompat(subscriptionId, subscriptionInfo.getDisplayName(),
|
|
|
|
return Optional.of(new SubscriptionInfoCompat(subscriptionId, subscriptionInfo.getDisplayName(),
|
|
|
@ -47,7 +50,7 @@ public class SubscriptionManagerCompat {
|
|
|
|
return new LinkedList<>();
|
|
|
|
return new LinkedList<>();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<SubscriptionInfo> subscriptionInfos = SubscriptionManager.from(context).getActiveSubscriptionInfoList();
|
|
|
|
List<SubscriptionInfo> subscriptionInfos = getSubscriptionManager().getActiveSubscriptionInfoList();
|
|
|
|
|
|
|
|
|
|
|
|
if (subscriptionInfos == null || subscriptionInfos.isEmpty()) {
|
|
|
|
if (subscriptionInfos == null || subscriptionInfos.isEmpty()) {
|
|
|
|
return new LinkedList<>();
|
|
|
|
return new LinkedList<>();
|
|
|
@ -56,13 +59,29 @@ public class SubscriptionManagerCompat {
|
|
|
|
List<SubscriptionInfoCompat> compatList = new LinkedList<>();
|
|
|
|
List<SubscriptionInfoCompat> compatList = new LinkedList<>();
|
|
|
|
|
|
|
|
|
|
|
|
for (SubscriptionInfo subscriptionInfo : subscriptionInfos) {
|
|
|
|
for (SubscriptionInfo subscriptionInfo : subscriptionInfos) {
|
|
|
|
compatList.add(new SubscriptionInfoCompat(subscriptionInfo.getSubscriptionId(),
|
|
|
|
if (isReady(subscriptionInfo)) {
|
|
|
|
subscriptionInfo.getDisplayName(),
|
|
|
|
compatList.add(new SubscriptionInfoCompat(subscriptionInfo.getSubscriptionId(),
|
|
|
|
subscriptionInfo.getMcc(),
|
|
|
|
subscriptionInfo.getDisplayName(),
|
|
|
|
subscriptionInfo.getMnc()));
|
|
|
|
subscriptionInfo.getMcc(),
|
|
|
|
|
|
|
|
subscriptionInfo.getMnc()));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return compatList;
|
|
|
|
return compatList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1)
|
|
|
|
|
|
|
|
private SubscriptionManager getSubscriptionManager() {
|
|
|
|
|
|
|
|
return ServiceUtil.getSubscriptionManager(context);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isReady(@NonNull SubscriptionInfo subscriptionInfo) {
|
|
|
|
|
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TelephonyManager telephonyManager = ServiceUtil.getTelephonyManager(context);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TelephonyManager specificTelephonyManager = telephonyManager.createForSubscriptionId(subscriptionInfo.getSubscriptionId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return specificTelephonyManager.getSimState() == TelephonyManager.SIM_STATE_READY;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|