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:
Arc Wang
2023-02-18 22:56:56 +08:00
parent f144ed6e00
commit 5cb2a1fa8d
3 changed files with 44 additions and 0 deletions

View File

@@ -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();
}
}