summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java')
-rw-r--r--src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java201
1 files changed, 0 insertions, 201 deletions
diff --git a/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java b/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java
deleted file mode 100644
index ac6c7e4..0000000
--- a/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.messaging.sms;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.content.res.XmlResourceParser;
-import android.os.Bundle;
-import android.support.v7.mms.CarrierConfigValuesLoader;
-import android.util.SparseArray;
-
-import com.android.messaging.R;
-import com.android.messaging.util.LogUtil;
-import com.android.messaging.util.OsUtil;
-import com.android.messaging.util.PhoneUtils;
-
-/**
- * Carrier configuration loader
- *
- * Loader tries to load from resources. If there is MMS API available, also
- * load from system.
- */
-public class BugleCarrierConfigValuesLoader implements CarrierConfigValuesLoader {
- /*
- * Key types
- */
- public static final String KEY_TYPE_INT = "int";
- public static final String KEY_TYPE_BOOL = "bool";
- public static final String KEY_TYPE_STRING = "string";
-
- private final Context mContext;
-
- // Cached values for subIds
- private final SparseArray<Bundle> mValuesCache;
-
- public BugleCarrierConfigValuesLoader(final Context context) {
- mContext = context;
- mValuesCache = new SparseArray<>();
- }
-
- @Override
- public Bundle get(int subId) {
- subId = PhoneUtils.getDefault().getEffectiveSubId(subId);
- Bundle values;
- String loadSource = null;
- synchronized (this) {
- values = mValuesCache.get(subId);
- if (values == null) {
- values = new Bundle();
- mValuesCache.put(subId, values);
- loadSource = loadLocked(subId, values);
- }
- }
- if (loadSource != null) {
- LogUtil.i(LogUtil.BUGLE_TAG, "Carrier configs loaded: " + values
- + " from " + loadSource + " for subId=" + subId);
- }
- return values;
- }
-
- /**
- * Clear the cache for reloading
- */
- public void reset() {
- synchronized (this) {
- mValuesCache.clear();
- }
- }
-
- /**
- * Loading carrier config values
- *
- * @param subId which SIM to load for
- * @param values the result to add to
- * @return the source of the config, could be "resources" or "resources+system"
- */
- private String loadLocked(final int subId, final Bundle values) {
- // Load from resources in earlier platform
- loadFromResources(subId, values);
- if (OsUtil.isAtLeastL()) {
- // Load from system to override if system API exists
- loadFromSystem(subId, values);
- return "resources+system";
- }
- return "resources";
- }
-
- /**
- * Load from system, using MMS API
- *
- * @param subId which SIM to load for
- * @param values the result to add to
- */
- private static void loadFromSystem(final int subId, final Bundle values) {
- try {
- final Bundle systemValues =
- PhoneUtils.get(subId).getSmsManager().getCarrierConfigValues();
- if (systemValues != null) {
- values.putAll(systemValues);
- }
- } catch (final Exception e) {
- LogUtil.w(LogUtil.BUGLE_TAG, "Calling system getCarrierConfigValues exception", e);
- }
- }
-
- /**
- * Load from SIM-dependent resources
- *
- * @param subId which SIM to load for
- * @param values the result to add to
- */
- private void loadFromResources(final int subId, final Bundle values) {
- // Get a subscription-dependent context for loading the mms_config.xml
- final Context subContext = getSubDepContext(mContext, subId);
- // Load and parse the XML
- XmlResourceParser parser = null;
- try {
- parser = subContext.getResources().getXml(R.xml.mms_config);
- final ApnsXmlProcessor processor = ApnsXmlProcessor.get(parser);
- processor.setMmsConfigHandler(new ApnsXmlProcessor.MmsConfigHandler() {
- @Override
- public void process(final String mccMnc, final String key, final String value,
- final String type) {
- update(values, type, key, value);
- }
- });
- processor.process();
- } catch (final Resources.NotFoundException e) {
- LogUtil.w(LogUtil.BUGLE_TAG, "Can not find mms_config.xml");
- } finally {
- if (parser != null) {
- parser.close();
- }
- }
- }
-
- /**
- * Get a subscription's Context so we can load resources from it
- *
- * @param context the sub-independent Context
- * @param subId the SIM's subId
- * @return the sub-dependent Context
- */
- private static Context getSubDepContext(final Context context, final int subId) {
- if (!OsUtil.isAtLeastL_MR1()) {
- return context;
- }
- final int[] mccMnc = PhoneUtils.get(subId).getMccMnc();
- final int mcc = mccMnc[0];
- final int mnc = mccMnc[1];
- final Configuration subConfig = new Configuration();
- if (mcc == 0 && mnc == 0) {
- Configuration config = context.getResources().getConfiguration();
- subConfig.mcc = config.mcc;
- subConfig.mnc = config.mnc;
- } else {
- subConfig.mcc = mcc;
- subConfig.mnc = mnc;
- }
- return context.createConfigurationContext(subConfig);
- }
-
- /**
- * Add or update a carrier config key/value pair to the Bundle
- *
- * @param values the result Bundle to add to
- * @param type the value type
- * @param key the key
- * @param value the value
- */
- public static void update(final Bundle values, final String type, final String key,
- final String value) {
- try {
- if (KEY_TYPE_INT.equals(type)) {
- values.putInt(key, Integer.parseInt(value));
- } else if (KEY_TYPE_BOOL.equals(type)) {
- values.putBoolean(key, Boolean.parseBoolean(value));
- } else if (KEY_TYPE_STRING.equals(type)){
- values.putString(key, value);
- }
- } catch (final NumberFormatException e) {
- LogUtil.w(LogUtil.BUGLE_TAG, "Add carrier values: "
- + "invalid " + key + "," + value + "," + type);
- }
- }
-}