diff --git a/api/system-current.txt b/api/system-current.txt index e6a3e9bf3e8e0..cef6b76dc8a73 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4746,6 +4746,7 @@ package android.net.wifi { method @Deprecated public boolean isEphemeral(); method @Deprecated public boolean isNoInternetAccessExpected(); field @Deprecated public boolean allowAutojoin; + field @Deprecated public int carrierId; field @Deprecated public String creatorName; field @Deprecated public int creatorUid; field @Deprecated public String lastUpdateName; @@ -4852,6 +4853,10 @@ package android.net.wifi { field public int numUsage; } + public static final class WifiNetworkSuggestion.Builder { + method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) public android.net.wifi.WifiNetworkSuggestion.Builder setCarrierId(int); + } + public class WifiScanner { method @Deprecated public void configureWifiChange(int, int, int, int, int, android.net.wifi.WifiScanner.BssidInfo[]); method @Deprecated public void configureWifiChange(android.net.wifi.WifiScanner.WifiChangeSettings); diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 3dc5a628fe7c9..30c24d37a494b 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -34,6 +34,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; import android.os.UserHandle; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.BackupUtils; import android.util.Log; @@ -729,6 +730,14 @@ public class WifiConfiguration implements Parcelable { @SystemApi public String lastUpdateName; + /** + * The carrier ID identifies the operator who provides this network configuration. + * see {@link TelephonyManager#getSimCarrierId()} + * @hide + */ + @SystemApi + public int carrierId = TelephonyManager.UNKNOWN_CARRIER_ID; + /** * @hide * Status of user approval for connection @@ -1850,6 +1859,7 @@ public class WifiConfiguration implements Parcelable { .append(" PRIO: ").append(this.priority) .append(" HIDDEN: ").append(this.hiddenSSID) .append(" PMF: ").append(this.requirePMF) + .append("CarrierId: ").append(this.carrierId) .append('\n'); @@ -2443,6 +2453,7 @@ public class WifiConfiguration implements Parcelable { randomizedMacExpirationTimeMs = source.randomizedMacExpirationTimeMs; requirePMF = source.requirePMF; updateIdentifier = source.updateIdentifier; + carrierId = source.carrierId; } } @@ -2517,6 +2528,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(macRandomizationSetting); dest.writeInt(osu ? 1 : 0); dest.writeLong(randomizedMacExpirationTimeMs); + dest.writeInt(carrierId); } /** Implement the Parcelable interface {@hide} */ @@ -2593,6 +2605,7 @@ public class WifiConfiguration implements Parcelable { config.macRandomizationSetting = in.readInt(); config.osu = in.readInt() != 0; config.randomizedMacExpirationTimeMs = in.readLong(); + config.carrierId = in.readInt(); return config; } diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java index f8c20111d79bb..7b99a2b5502f3 100644 --- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java +++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java @@ -1263,4 +1263,23 @@ public class WifiEnterpriseConfig implements Parcelable { public @Ocsp int getOcsp() { return mOcsp; } + + /** + * If the current authentication method needs SIM card. + * @return true if the credential information require SIM card for current authentication + * method, otherwise it returns false. + * @hide + */ + public boolean requireSimCredential() { + if (mEapMethod == Eap.SIM || mEapMethod == Eap.AKA || mEapMethod == Eap.AKA_PRIME) { + return true; + } + if (mEapMethod == Eap.PEAP) { + if (mPhase2Method == Phase2.SIM || mPhase2Method == Phase2.AKA + || mPhase2Method == Phase2.AKA_PRIME) { + return true; + } + } + return false; + } } diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java index 9b529cee58b34..246e96f4ce3fa 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java +++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java @@ -21,12 +21,15 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresPermission; +import android.annotation.SystemApi; import android.app.ActivityThread; import android.net.MacAddress; import android.net.wifi.hotspot2.PasspointConfiguration; import android.os.Parcel; import android.os.Parcelable; import android.os.Process; +import android.telephony.TelephonyManager; import android.text.TextUtils; import java.nio.charset.CharsetEncoder; @@ -107,6 +110,12 @@ public final class WifiNetworkSuggestion implements Parcelable { */ private int mPriority; + /** + * The carrier ID identifies the operator who provides this network configuration. + * see {@link TelephonyManager#getSimCarrierId()} + */ + private int mCarrierId; + public Builder() { mSsid = null; mBssid = null; @@ -121,6 +130,7 @@ public final class WifiNetworkSuggestion implements Parcelable { mIsUserInteractionRequired = false; mIsMetered = false; mPriority = UNASSIGNED_PRIORITY; + mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID; } /** @@ -257,6 +267,23 @@ public final class WifiNetworkSuggestion implements Parcelable { return this; } + /** + * Set the carrier ID of the network operator. The carrier ID associates a Suggested + * network with a specific carrier (and therefore SIM). The carrier ID must be provided + * for any network which uses the SIM-based authentication: e.g. EAP-SIM, EAP-AKA, + * EAP-AKA', and EAP-PEAP with SIM-based phase 2 authentication. + * @param carrierId see {@link TelephonyManager#getSimCarrierId()}. + * @return Instance of {@link Builder} to enable chaining of the builder method. + * + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) + public @NonNull Builder setCarrierId(int carrierId) { + mCarrierId = carrierId; + return this; + } + /** * Specifies whether this represents a hidden network. *
@@ -380,6 +407,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
wifiConfiguration.meteredOverride =
mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
: WifiConfiguration.METERED_OVERRIDE_NONE;
+ wifiConfiguration.carrierId = mCarrierId;
return wifiConfiguration;
}
@@ -405,6 +433,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
wifiConfiguration.meteredOverride =
mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
: WifiConfiguration.METERED_OVERRIDE_NONE;
+ mPasspointConfiguration.setCarrierId(mCarrierId);
return wifiConfiguration;
}
diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
index e9aa076798e1c..5befb54ce50a1 100644
--- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
+++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
@@ -24,6 +24,7 @@ import android.net.wifi.hotspot2.pps.UpdateParameter;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
+import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -397,6 +398,30 @@ public final class PasspointConfiguration implements Parcelable {
return mServiceFriendlyNames.get(mServiceFriendlyNames.keySet().stream().findFirst().get());
}
+ /**
+ * The carrier ID identifies the operator who provides this network configuration.
+ * see {@link TelephonyManager#getSimCarrierId()}
+ */
+ private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
+
+ /**
+ * Set the carrier ID associated with current configuration.
+ * @param carrierId {@code mCarrierId}
+ * @hide
+ */
+ public void setCarrierId(int carrierId) {
+ this.mCarrierId = carrierId;
+ }
+
+ /**
+ * Get the carrier ID associated with current configuration.
+ * @return {@code mCarrierId}
+ * @hide
+ */
+ public int getCarrierId() {
+ return mCarrierId;
+ }
+
/**
* Constructor for creating PasspointConfiguration with default values.
*/
@@ -438,6 +463,7 @@ public final class PasspointConfiguration implements Parcelable {
mUsageLimitUsageTimePeriodInMinutes = source.mUsageLimitUsageTimePeriodInMinutes;
mServiceFriendlyNames = source.mServiceFriendlyNames;
mAaaServerTrustedNames = source.mAaaServerTrustedNames;
+ mCarrierId = source.mCarrierId;
}
@Override
@@ -466,6 +492,7 @@ public final class PasspointConfiguration implements Parcelable {
bundle.putSerializable("serviceFriendlyNames",
(HashMap