Merge "Update incompatible charging string for different product" into udc-dev
diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
index e69ab98..1f25ae0 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessManager.java
@@ -33,6 +33,7 @@
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -473,8 +474,7 @@
return null;
}
- final long rawStartTimestamp =
- batteryHistoryMap.keySet().stream().min(Long::compare).orElse(0L);
+ final long rawStartTimestamp = Collections.min(batteryHistoryMap.keySet());
// Start the async task to compute diff usage data and load labels and icons.
new DataProcessManager(
context,
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index e483a4d..f07a3b7 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -179,7 +179,7 @@
}
private void addRegisterBySubId(int subId) {
- if (!mTelephonyCallbackMap.containsKey(subId)) {
+ if (!mTelephonyCallbackMap.containsKey(subId) || !mTelephonyManagerMap.containsKey(subId)) {
PhoneCallStateTelephonyCallback
telephonyCallback = new PhoneCallStateTelephonyCallback();
mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(),
@@ -435,8 +435,6 @@
getUiccInfoBySubscriptionInfo(uiccSlotInfos, subInfo);
SubscriptionInfo firstRemovableSubInfo = SubscriptionUtil.getFirstRemovableSubscription(
context);
- SubscriptionInfo subscriptionOrDefault = SubscriptionUtil.getSubscriptionOrDefault(
- context, mSubId);
if(DEBUG){
Log.d(TAG, "convert subscriptionInfo to entity for subId = " + mSubId);
}
@@ -455,8 +453,7 @@
firstRemovableSubInfo == null ? false
: firstRemovableSubInfo.getSubscriptionId() == mSubId,
String.valueOf(SubscriptionUtil.getDefaultSimConfig(context, mSubId)),
- subscriptionOrDefault == null ? false
- : subscriptionOrDefault.getSubscriptionId() == mSubId,
+ SubscriptionUtil.isDefaultSubscription(context, mSubId),
mSubscriptionManager.isValidSubscriptionId(mSubId),
mSubscriptionManager.isUsableSubscriptionId(mSubId),
mSubscriptionManager.isActiveSubscriptionId(mSubId),
@@ -540,11 +537,11 @@
SubscriptionUtil.getSelectableSubscriptionInfoList(mContext));
}
- private void insertAvailableSubInfoToEntity(List<SubscriptionInfo> availableInfoList) {
+ private void insertAvailableSubInfoToEntity(List<SubscriptionInfo> inputAvailableInfoList) {
sExecutor.execute(() -> {
SubscriptionInfoEntity[] availableInfoArray = mAvailableSubInfoEntityList.toArray(
new SubscriptionInfoEntity[0]);
- if ((availableInfoList == null || availableInfoList.size() == 0)
+ if ((inputAvailableInfoList == null || inputAvailableInfoList.size() == 0)
&& mAvailableSubInfoEntityList.size() != 0) {
if (DEBUG) {
Log.d(TAG, "availableSudInfoList from framework is empty, remove all subs");
@@ -554,11 +551,12 @@
deleteAllInfoBySubId(info.subId);
}
- } else if (availableInfoList != null) {
- SubscriptionInfo[] infoArray = availableInfoList.toArray(new SubscriptionInfo[0]);
+ } else if (inputAvailableInfoList != null) {
+ SubscriptionInfo[] inputAvailableInfoArray = inputAvailableInfoList.toArray(
+ new SubscriptionInfo[0]);
// Remove the redundant subInfo
- if (availableInfoList.size() <= mAvailableSubInfoEntityList.size()) {
- for (SubscriptionInfo subInfo : infoArray) {
+ if (inputAvailableInfoList.size() <= mAvailableSubInfoEntityList.size()) {
+ for (SubscriptionInfo subInfo : inputAvailableInfoArray) {
int subId = subInfo.getSubscriptionId();
if (mSubscriptionInfoMap.containsKey(subId)) {
mSubscriptionInfoMap.remove(subId);
@@ -571,11 +569,20 @@
deleteAllInfoBySubId(String.valueOf(key));
}
}
+ } else if (inputAvailableInfoList.size() < mAvailableSubInfoEntityList.size()) {
+ // Check the subInfo between the new list from framework and old list in
+ // the database, if the subInfo is not existed in the new list, delete it
+ // from the database.
+ for (SubscriptionInfoEntity info : availableInfoArray) {
+ if (sCacheSubscriptionInfoEntityMap.containsKey(info.subId)) {
+ deleteAllInfoBySubId(info.subId);
+ }
+ }
}
}
// Insert all new available subInfo to database.
- for (SubscriptionInfo subInfo : infoArray) {
+ for (SubscriptionInfo subInfo : inputAvailableInfoArray) {
if (DEBUG) {
Log.d(TAG, "insert subInfo to subInfoEntity, subInfo = " + subInfo);
}
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
index 4ad0470..ced2b8a 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
@@ -101,7 +101,9 @@
return setSummaryResId(R.string.calls_sms_no_sim);
} else {
final StringBuilder summary = new StringBuilder();
- for (SubscriptionInfoEntity subInfo : list) {
+ SubscriptionInfoEntity[] entityArray = list.toArray(
+ new SubscriptionInfoEntity[0]);
+ for (SubscriptionInfoEntity subInfo : entityArray) {
int subsSize = list.size();
int subId = Integer.parseInt(subInfo.subId);
final CharSequence displayName = subInfo.uniqueName;
@@ -125,7 +127,7 @@
.append(")");
}
// Do not add ", " for the last subscription.
- if (!subInfo.equals(list.get(list.size() - 1))) {
+ if (list.size() > 0 && !subInfo.equals(list.get(list.size() - 1))) {
summary.append(", ");
}
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index 13bb519..9c4ac03 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -688,6 +688,12 @@
.findFirst().orElse(null);
}
+ public static boolean isDefaultSubscription(Context context, int subId) {
+ SubscriptionAnnotation subInfo = getDefaultSubscriptionSelection(
+ new SelectableSubscriptions(context, true).call());
+ return subInfo != null && subInfo.getSubscriptionId() == subId;
+ }
+
public static SubscriptionInfo getSubscriptionOrDefault(Context context, int subscriptionId) {
return getSubscription(context, subscriptionId,
(subscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) ? null : (
diff --git a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java
index 4f9e138..46ec61d 100644
--- a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java
+++ b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java
@@ -114,15 +114,12 @@
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> subInfoEntityList) {
// TODO(b/262195754): Need the intent to enabled the feature.
-// if (DataServiceUtils.shouldUpdateEntityList(mSubscriptionInfoEntityList,
-// subInfoEntityList)) {
-// mSubscriptionInfoEntityList = subInfoEntityList;
-// mSubscriptionInfoEntityList.forEach(entity -> {
-// if (Integer.parseInt(entity.subId) == mSubId) {
-// mSubscriptionInfoEntity = entity;
-// update();
-// }
-// });
-// }
+// mSubscriptionInfoEntityList = subInfoEntityList;
+// mSubscriptionInfoEntityList.forEach(entity -> {
+// if (Integer.parseInt(entity.subId) == mSubId) {
+// mSubscriptionInfoEntity = entity;
+// update();
+// }
+// });
}
}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 1ff5e17..d5b2c2e 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -23,6 +23,7 @@
import android.os.Bundle;
import android.os.UserManager;
import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -150,7 +151,7 @@
MobileNetworkUtils.getSearchableSubscriptionId(context));
Log.d(LOG_TAG, "display subId from intent: " + mSubId);
} else {
- Log.d(LOG_TAG, "intent is null, can not get the subId from intent.");
+ Log.d(LOG_TAG, "intent is null, can not get subId " + mSubId + " from intent.");
}
} else {
mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
@@ -165,9 +166,7 @@
mMobileNetworkRepository.queryMobileNetworkInfoBySubId(
String.valueOf(mSubId));
});
- if (mSubId <= SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- return Arrays.asList();
- }
+
return Arrays.asList(
new DataUsageSummaryPreferenceController(getActivity(), getSettingsLifecycle(),
this, mSubId),
@@ -178,8 +177,6 @@
new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
this),
new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,
- getSettingsLifecycle(), this, mSubId),
- new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,
getSettingsLifecycle(), this, mSubId));
}
@@ -188,8 +185,14 @@
super.onAttach(context);
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- Log.d(LOG_TAG, "Invalid subId request " + mSubId);
- return;
+ Log.d(LOG_TAG, "Invalid subId, get the default subscription to show.");
+ SubscriptionInfo info = SubscriptionUtil.getSubscriptionOrDefault(context, mSubId);
+ if (info == null) {
+ Log.d(LOG_TAG, "Invalid subId request " + mSubId);
+ return;
+ }
+ mSubId = info.getSubscriptionId();
+ Log.d(LOG_TAG, "Show NetworkSettings fragment for subId" + mSubId);
}
Intent intent = getIntent();
@@ -291,7 +294,11 @@
use(ContactDiscoveryPreferenceController.class).init(getParentFragmentManager(), mSubId);
use(NrAdvancedCallingPreferenceController.class).init(mSubId);
use(TransferEsimPreferenceController.class).init(mSubId, mSubscriptionInfoEntity);
- use(ConvertToEsimPreferenceController.class).init(mSubId, mSubscriptionInfoEntity);
+ final ConvertToEsimPreferenceController convertToEsimPreferenceController =
+ use(ConvertToEsimPreferenceController.class);
+ if (convertToEsimPreferenceController != null) {
+ convertToEsimPreferenceController.init(mSubId, mSubscriptionInfoEntity);
+ }
}
@Override
@@ -321,7 +328,6 @@
}
private void onSubscriptionDetailChanged() {
-
if (mSubscriptionInfoEntity != null) {
/**
* Update the title when SIM stats got changed
@@ -451,7 +457,7 @@
ContactDiscoveryDialogFragment fragment = getContactDiscoveryFragment(mSubId);
if (mSubscriptionInfoEntity == null) {
- Log.d(LOG_TAG, "Zoey, showContactDiscoveryDialog, Invalid subId request " + mSubId);
+ Log.d(LOG_TAG, "showContactDiscoveryDialog, Invalid subId request " + mSubId);
onDestroy();
return;
}
@@ -488,13 +494,20 @@
}
mSubInfoEntityList = subInfoEntityList;
- mSubInfoEntityList.forEach(entity -> {
+ SubscriptionInfoEntity[] entityArray = mSubInfoEntityList.toArray(
+ new SubscriptionInfoEntity[0]);
+ for (SubscriptionInfoEntity entity : entityArray) {
int subId = Integer.parseInt(entity.subId);
mSubscriptionInfoMap.put(subId, entity);
- if (subId == mSubId) {
+ if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && subId == mSubId) {
mSubscriptionInfoEntity = entity;
- onSubscriptionDetailChanged();
+ Log.d(LOG_TAG, "Set subInfo for subId " + mSubId);
+ break;
+ } else if (entity.isDefaultSubscriptionSelection) {
+ mSubscriptionInfoEntity = entity;
+ Log.d(LOG_TAG, "Set subInfo to the default subInfo.");
}
- });
+ }
+ onSubscriptionDetailChanged();
}
}