Additional changes to SubscriptionManager API as per API council.
bug: 17575308 Change-Id: Idd98aa46c15a9219ccf28091c62602ac8bf16c62
This commit is contained in:
@@ -19,8 +19,6 @@ package com.android.settings.sim;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings.SimSettingsActivity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -31,13 +29,14 @@ import android.content.SharedPreferences.Editor;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionListener;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
||||
|
||||
import com.android.settings.Utils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SimBootReceiver extends BroadcastReceiver {
|
||||
private static final int SLOT_EMPTY = -1;
|
||||
private static final int NOTIFICATION_ID = 1;
|
||||
@@ -47,16 +46,17 @@ public class SimBootReceiver extends BroadcastReceiver {
|
||||
private SharedPreferences mSharedPreferences = null;
|
||||
private TelephonyManager mTelephonyManager;
|
||||
private Context mContext;
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
mContext = context;
|
||||
mSubscriptionManager = SubscriptionManager.from(mContext);
|
||||
mSharedPreferences = mContext.getSharedPreferences(SHARED_PREFERENCES_NAME,
|
||||
Context.MODE_PRIVATE);
|
||||
|
||||
SubscriptionManager.register(mContext, mSubscriptionListener,
|
||||
SubscriptionListener.LISTEN_SUBSCRIPTION_INFO_LIST_CHANGED);
|
||||
mSubscriptionManager.registerOnSubscriptionsChangedListener(mSubscriptionListener);
|
||||
}
|
||||
|
||||
private void detectChangeAndNotify() {
|
||||
@@ -71,12 +71,13 @@ public class SimBootReceiver extends BroadcastReceiver {
|
||||
// by checking if the list is empty.
|
||||
// This is not completely correct, but works for most cases.
|
||||
// See Bug: 18377252
|
||||
if (SubscriptionManager.getActiveSubscriptionInfoList().size() < 1) {
|
||||
List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||
if (sil == null || sil.size() < 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < numSlots; i++) {
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(i);
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(mContext, i);
|
||||
final String key = SLOT_PREFIX+i;
|
||||
final int lastSubId = getLastSubId(key);
|
||||
|
||||
@@ -133,9 +134,10 @@ public class SimBootReceiver extends BroadcastReceiver {
|
||||
notificationManager.cancel(NOTIFICATION_ID);
|
||||
}
|
||||
|
||||
private final SubscriptionListener mSubscriptionListener = new SubscriptionListener() {
|
||||
private final OnSubscriptionsChangedListener mSubscriptionListener =
|
||||
new OnSubscriptionsChangedListener() {
|
||||
@Override
|
||||
public void onSubscriptionInfoChanged() {
|
||||
public void onSubscriptionsChanged() {
|
||||
detectChangeAndNotify();
|
||||
}
|
||||
};
|
||||
|
@@ -69,6 +69,7 @@ import java.util.List;
|
||||
|
||||
public class SimSettings extends RestrictedSettingsFragment implements Indexable {
|
||||
private static final String TAG = "SimSettings";
|
||||
private static final boolean DBG = false;
|
||||
|
||||
private static final String DISALLOW_CONFIG_SIM = "no_config_sim";
|
||||
private static final String SIM_CARD_CATEGORY = "sim_cards";
|
||||
@@ -118,6 +119,9 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
private PreferenceCategory mSimCards = null;
|
||||
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
private Utils mUtils;
|
||||
|
||||
public SimSettings() {
|
||||
super(DISALLOW_CONFIG_SIM);
|
||||
}
|
||||
@@ -126,9 +130,13 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
public void onCreate(final Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
|
||||
mSubscriptionManager = SubscriptionManager.from(getActivity());
|
||||
|
||||
if (mSubInfoList == null) {
|
||||
mSubInfoList = SubscriptionManager.getActiveSubscriptionInfoList();
|
||||
mSubInfoList = mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||
// FIXME: b/18385348, needs to handle null from getActiveSubscriptionInfoList
|
||||
}
|
||||
if (DBG) log("[onCreate] mSubInfoList=" + mSubInfoList);
|
||||
|
||||
createPreferences();
|
||||
updateAllOptions();
|
||||
@@ -148,7 +156,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
|
||||
mSelectableSubInfos = new ArrayList<SubscriptionInfo>();
|
||||
for (int i = 0; i < numSlots; ++i) {
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(i);
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
|
||||
mSimCards.addPreference(new SimPreference(getActivity(), sir, i));
|
||||
mAvailableSubInfos.add(sir);
|
||||
if (sir != null) {
|
||||
@@ -166,7 +174,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
mAvailableSubInfos = new ArrayList<SubscriptionInfo>(numSlots);
|
||||
for (int i = 0; i < numSlots; ++i) {
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(i);
|
||||
final SubscriptionInfo sir = Utils.findRecordBySlotId(getActivity(), i);
|
||||
mAvailableSubInfos.add(sir);
|
||||
if (sir != null) {
|
||||
}
|
||||
@@ -179,7 +187,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
}
|
||||
|
||||
private void updateSimSlotValues() {
|
||||
SubscriptionManager.getAllSubscriptionInfoList();
|
||||
mSubscriptionManager.getAllSubscriptionInfoList();
|
||||
|
||||
final int prefSize = mSimCards.getPreferenceCount();
|
||||
for (int i = 0; i < prefSize; ++i) {
|
||||
@@ -198,9 +206,11 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
private void updateSmsValues() {
|
||||
final Preference simPref = findPreference(KEY_SMS);
|
||||
final SubscriptionInfo sir = Utils.findRecordBySubId(SubscriptionManager.getDefaultSmsSubId());
|
||||
final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
|
||||
mSubscriptionManager.getDefaultSmsSubId());
|
||||
simPref.setTitle(R.string.sms_messages_title);
|
||||
if (mSubInfoList.size() == 1) {
|
||||
if (DBG) log("[updateSmsValues] mSubInfoList=" + mSubInfoList);
|
||||
if (mSubInfoList != null && mSubInfoList.size() == 1) {
|
||||
simPref.setSummary(mSubInfoList.get(0).getDisplayName());
|
||||
} else if (sir != null) {
|
||||
simPref.setSummary(sir.getDisplayName());
|
||||
@@ -212,9 +222,12 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
private void updateCellularDataValues() {
|
||||
final Preference simPref = findPreference(KEY_CELLULAR_DATA);
|
||||
final SubscriptionInfo sir = Utils.findRecordBySubId(SubscriptionManager.getDefaultDataSubId());
|
||||
final SubscriptionInfo sir = Utils.findRecordBySubId(getActivity(),
|
||||
mSubscriptionManager.getDefaultDataSubId());
|
||||
simPref.setTitle(R.string.cellular_data_title);
|
||||
if (mSubInfoList.size() == 1) {
|
||||
if (DBG) log("[updateCellularDataValues] mSubInfoList=" + mSubInfoList);
|
||||
|
||||
if (mSubInfoList != null && mSubInfoList.size() == 1) {
|
||||
simPref.setSummary(mSubInfoList.get(0).getDisplayName());
|
||||
} else if (sir != null) {
|
||||
simPref.setSummary(sir.getDisplayName());
|
||||
@@ -240,7 +253,10 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
mSubInfoList = SubscriptionManager.getActiveSubscriptionInfoList();
|
||||
mSubInfoList = mSubscriptionManager.getActiveSubscriptionInfoList();
|
||||
// FIXME: b/18385348, needs to handle null from getActiveSubscriptionInfoList
|
||||
if (DBG) log("[onResme] mSubInfoList=" + mSubInfoList);
|
||||
|
||||
updateAvailableSubInfos();
|
||||
updateAllOptions();
|
||||
}
|
||||
@@ -275,7 +291,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
if (id == DATA_PICK) {
|
||||
sir = mSelectableSubInfos.get(value);
|
||||
SubscriptionManager.setDefaultDataSubId(sir.getSubscriptionId());
|
||||
mSubscriptionManager.setDefaultDataSubId(sir.getSubscriptionId());
|
||||
} else if (id == CALLS_PICK) {
|
||||
final TelecomManager telecomManager =
|
||||
TelecomManager.from(getActivity());
|
||||
@@ -285,7 +301,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
value < 1 ? null : phoneAccountsList.get(value - 1));
|
||||
} else if (id == SMS_PICK) {
|
||||
sir = mSelectableSubInfos.get(value);
|
||||
SubscriptionManager.setDefaultSmsSubId(sir.getSubscriptionId());
|
||||
mSubscriptionManager.setDefaultSmsSubId(sir.getSubscriptionId());
|
||||
}
|
||||
|
||||
updateActivitesCategory();
|
||||
@@ -514,16 +530,16 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
String displayName = nameText.getText().toString();
|
||||
int subId = mSubInfoRecord.getSubscriptionId();
|
||||
mSubInfoRecord.setDisplayName(displayName);
|
||||
SubscriptionManager.setDisplayName(displayName, subId,
|
||||
mSubscriptionManager.setDisplayName(displayName, subId,
|
||||
SubscriptionManager.NAME_SOURCE_USER_INPUT);
|
||||
Utils.findRecordBySubId(subId).setDisplayName(displayName);
|
||||
Utils.findRecordBySubId(getActivity(), subId).setDisplayName(displayName);
|
||||
|
||||
final int tintSelected = tintSpinner.getSelectedItemPosition();
|
||||
int subscriptionId = mSubInfoRecord.getSubscriptionId();
|
||||
int tint = mTintArr[tintSelected];
|
||||
mSubInfoRecord.setIconTint(tint);
|
||||
SubscriptionManager.setIconTint(tint, subscriptionId);
|
||||
Utils.findRecordBySubId(subscriptionId).setIconTint(tint);
|
||||
mSubscriptionManager.setIconTint(tint, subscriptionId);
|
||||
Utils.findRecordBySubId(getActivity(), subscriptionId).setIconTint(tint);
|
||||
|
||||
updateAllOptions();
|
||||
update();
|
||||
@@ -611,27 +627,8 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort Subscription List in SIM Id, Subscription Id
|
||||
* @param context The Context
|
||||
* @return Sorted Subscription List or NULL if no activated Subscription
|
||||
*/
|
||||
public static List<SubscriptionInfo> getSortedSubInfoList(Context context) {
|
||||
List<SubscriptionInfo> infoList = SubscriptionManager.getActiveSubscriptionInfoList();
|
||||
if (infoList != null) {
|
||||
Collections.sort(infoList, new Comparator<SubscriptionInfo>() {
|
||||
|
||||
@Override
|
||||
public int compare(SubscriptionInfo arg0, SubscriptionInfo arg1) {
|
||||
int flag = arg0.getSimSlotIndex() - arg1.getSimSlotIndex();
|
||||
if (flag == 0) {
|
||||
return arg0.getSubscriptionId() - arg1.getSubscriptionId();
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
});
|
||||
}
|
||||
return infoList;
|
||||
private void log(String s) {
|
||||
Log.d(TAG, s);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user