Put mobile NetworkTemplate in Intent for SearchResultTeampoline
BillingCycleSettings and Settings.ACTION_MOBILE_DATA_USAGE needs mobile NetworkTemplate to work correctly. Bug: 268411305 Test: manual Change-Id: I7e2eafff39f1bffeb8adbe4d7c3567b7a4ea7dda
This commit is contained in:
@@ -27,6 +27,7 @@ import android.icu.util.MeasureUnit;
|
||||
import android.net.NetworkPolicy;
|
||||
import android.net.NetworkTemplate;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.method.NumberKeyListener;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -54,6 +55,7 @@ import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.text.ParseException;
|
||||
import java.util.Optional;
|
||||
import java.util.TimeZone;
|
||||
|
||||
@SearchIndexable
|
||||
@@ -115,6 +117,18 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
|
||||
|
||||
Bundle args = getArguments();
|
||||
mNetworkTemplate = args.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE);
|
||||
if (mNetworkTemplate == null && getIntent() != null) {
|
||||
mNetworkTemplate = getIntent().getParcelableExtra(Settings.EXTRA_NETWORK_TEMPLATE);
|
||||
}
|
||||
|
||||
if (mNetworkTemplate == null) {
|
||||
Optional<NetworkTemplate> mobileNetworkTemplateFromSim =
|
||||
DataUsageUtils.getMobileNetworkTemplateFromSubId(context, getIntent());
|
||||
if (mobileNetworkTemplateFromSim.isPresent()) {
|
||||
mNetworkTemplate = mobileNetworkTemplateFromSim.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (mNetworkTemplate == null) {
|
||||
mNetworkTemplate = DataUsageUtils.getDefaultTemplate(context,
|
||||
DataUsageUtils.getDefaultSubscriptionId(context));
|
||||
|
@@ -69,6 +69,7 @@ import com.android.settingslib.net.UidDetailProvider;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Panel showing data usage history across various networks, including options
|
||||
@@ -266,6 +267,14 @@ public class DataUsageList extends DataUsageBaseFragment
|
||||
mSubId = intent.getIntExtra(Settings.EXTRA_SUB_ID,
|
||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
mTemplate = intent.getParcelableExtra(Settings.EXTRA_NETWORK_TEMPLATE);
|
||||
|
||||
if (mTemplate == null) {
|
||||
Optional<NetworkTemplate> mobileNetworkTemplateFromSim =
|
||||
DataUsageUtils.getMobileNetworkTemplateFromSubId(getContext(), getIntent());
|
||||
if (mobileNetworkTemplateFromSim.isPresent()) {
|
||||
mTemplate = mobileNetworkTemplateFromSim.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -22,11 +22,13 @@ import static android.telephony.TelephonyManager.SIM_STATE_READY;
|
||||
import android.app.usage.NetworkStats.Bucket;
|
||||
import android.app.usage.NetworkStatsManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkTemplate;
|
||||
import android.os.RemoteException;
|
||||
import android.os.SystemProperties;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
@@ -39,6 +41,7 @@ import com.android.settings.datausage.lib.DataUsageLib;
|
||||
import com.android.settings.network.ProxySubscriptionManager;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Utility methods for data usage classes.
|
||||
@@ -193,4 +196,22 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mobile NetworkTemplate if EXTRA_SUB_ID of the Intent is available and the subId
|
||||
* is valid & hasMobileData. Otherwise, returns empty data.
|
||||
*/
|
||||
public static Optional<NetworkTemplate> getMobileNetworkTemplateFromSubId(Context context,
|
||||
Intent intent) {
|
||||
if (intent == null || !intent.hasExtra(Settings.EXTRA_SUB_ID)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
int subId = intent.getIntExtra(Settings.EXTRA_SUB_ID,
|
||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
if (SubscriptionManager.isValidSubscriptionId(subId) && hasMobileData(context)) {
|
||||
return Optional.of(DataUsageLib.getMobileTemplate(context, subId));
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user