|
|
|
@ -3,8 +3,7 @@ package org.thoughtcrime.securesms.mms;
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.content.res.Configuration;
|
|
|
|
|
import android.os.Build;
|
|
|
|
|
import android.support.annotation.Nullable;
|
|
|
|
|
import android.support.annotation.NonNull;
|
|
|
|
|
import android.support.annotation.WorkerThread;
|
|
|
|
|
|
|
|
|
|
import com.android.mms.service_alt.MmsConfig;
|
|
|
|
@ -16,35 +15,35 @@ import org.whispersystems.libsignal.util.guava.Optional;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
public class MmsConfigManager {
|
|
|
|
|
final class MmsConfigManager {
|
|
|
|
|
|
|
|
|
|
private static Map<Integer, MmsConfig> mmsConfigMap = new HashMap<>();
|
|
|
|
|
private static final Map<Integer, MmsConfig> mmsConfigMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
@WorkerThread
|
|
|
|
|
public synchronized static @Nullable MmsConfig getMmsConfig(Context context, int subscriptionId) {
|
|
|
|
|
if (mmsConfigMap.containsKey(subscriptionId)) {
|
|
|
|
|
return mmsConfigMap.get(subscriptionId);
|
|
|
|
|
synchronized static @NonNull MmsConfig getMmsConfig(Context context, int subscriptionId) {
|
|
|
|
|
MmsConfig mmsConfig = mmsConfigMap.get(subscriptionId);
|
|
|
|
|
if (mmsConfig != null) {
|
|
|
|
|
return mmsConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MmsConfig loadedConfig = loadMmsConfig(context, subscriptionId);
|
|
|
|
|
|
|
|
|
|
if (loadedConfig != null) mmsConfigMap.put(subscriptionId, loadedConfig);
|
|
|
|
|
mmsConfigMap.put(subscriptionId, loadedConfig);
|
|
|
|
|
|
|
|
|
|
return loadedConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static MmsConfig loadMmsConfig(Context context, int subscriptionId) {
|
|
|
|
|
if (subscriptionId != -1 && Build.VERSION.SDK_INT >= 24) {
|
|
|
|
|
Optional<SubscriptionInfoCompat> subscriptionInfo = new SubscriptionManagerCompat(context).getActiveSubscriptionInfo(subscriptionId);
|
|
|
|
|
private static @NonNull MmsConfig loadMmsConfig(Context context, int subscriptionId) {
|
|
|
|
|
Optional<SubscriptionInfoCompat> subscriptionInfo = new SubscriptionManagerCompat(context).getActiveSubscriptionInfo(subscriptionId);
|
|
|
|
|
|
|
|
|
|
if (subscriptionInfo.isPresent()) {
|
|
|
|
|
Configuration configuration = context.getResources().getConfiguration();
|
|
|
|
|
configuration.mcc = subscriptionInfo.get().getMcc();
|
|
|
|
|
configuration.mnc = subscriptionInfo.get().getMnc();
|
|
|
|
|
if (subscriptionInfo.isPresent()) {
|
|
|
|
|
SubscriptionInfoCompat subscriptionInfoCompat = subscriptionInfo.get();
|
|
|
|
|
Configuration configuration = context.getResources().getConfiguration();
|
|
|
|
|
configuration.mcc = subscriptionInfoCompat.getMcc();
|
|
|
|
|
configuration.mnc = subscriptionInfoCompat.getMnc();
|
|
|
|
|
|
|
|
|
|
Context subcontext = context.createConfigurationContext(configuration);
|
|
|
|
|
return new MmsConfig(subcontext, subscriptionId);
|
|
|
|
|
}
|
|
|
|
|
Context subContext = context.createConfigurationContext(configuration);
|
|
|
|
|
return new MmsConfig(subContext, subscriptionId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new MmsConfig(context, subscriptionId);
|
|
|
|
|