/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.net.wifi; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import com.android.wifi.flags.Flags; import java.util.Objects; /** * Contains information extracted from URI * * @hide */ @FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API) @SystemApi public final class UriParserResults implements Parcelable { /** * Return value for {@link #getUriScheme()} indicating that the URI contains * a ZXing WiFi configuration. */ @FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API) public static final int URI_SCHEME_ZXING_WIFI_NETWORK_CONFIG = 1; /** * Return value for {@link #getUriScheme()} indicating that the URI contains * a DPP (Easy Connect) configuration. */ @FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API) public static final int URI_SCHEME_DPP = 2; /** * URI_SCHEME_DPP for standard Wi-Fi device provision protocol; * URI_SCHEME_ZXING_WIFI_NETWORK_CONFIG for ZXing reader library's Wi-Fi Network config format. */ @WifiAnnotations.UriScheme private int mScheme; /** Public key from parsed Wi-Fi DPP URI, it is valid when mScheme is URI_SCHEME_DPP. */ @Nullable private String mPublicKey; /** * Optional device specific information from the Wi-Fi DPP URI, * it is valid when mScheme is URI_SCHEME_DPP */ @Nullable private String mInformation; /** * WifiConfiguration from parsed ZXing reader library's Wi-Fi Network config format. Valid or * Not null when mScheme is URI_SCHEME_ZXING_WIFI_NETWORK_CONFIG */ @Nullable private WifiConfiguration mWifiConfig; /** @hide */ @FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API) public UriParserResults( int scheme, @Nullable String publicKey, @Nullable String information, @Nullable WifiConfiguration config) { mScheme = scheme; mPublicKey = publicKey; mInformation = information; if (config != null) { mWifiConfig = new WifiConfiguration(config); } } /** * The scheme described by the URI. * *
URI_SCHEME_DPP for standard Wi-Fi device provision protocol.
* URI_SCHEME_ZXING_WIFI_NETWORK_CONFIG for ZXing reader library's Wi-Fi Network config format.
*/
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@WifiAnnotations.UriScheme
public int getUriScheme() {
return mScheme;
}
/**
* The public key of the DPP (Wi-Fi Easy Connect).
*
* If {@code getUriScheme()} returns URI_SCHEME_DPP, this field contains the public key
* of the DPP (Wi-Fi Easy Connect). Otherwise, it is null.
*/
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@Nullable
public String getPublicKey() {
return mPublicKey;
}
/**
* The information of the DPP (Wi-Fi Easy Connect).
*
* If {@code getUriScheme()} returns URI_SCHEME_DPP, this field contains the information
* of the DPP (Wi-Fi Easy Connect). Otherwise, it is null.
*/
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@Nullable
public String getInformation() {
return mInformation;
}
/**
* The WifiConfiguration of the zxing wifi network.
*
* If {@code getUriScheme()} returns URI_SCHEME_ZXING_WIFI_NETWORK_CONFIG, this field contains
* the WifiConfiguration of the zxing wifi network. Otherwise, it is null.
*/
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@Nullable
public WifiConfiguration getWifiConfiguration() {
return mWifiConfig;
}
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@Override
/**
* Implement the Parcelable interface.
*/
public int describeContents() {
return 0;
}
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@Override
/**
* Implement the Parcelable interface.
*/
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mScheme);
dest.writeString(mPublicKey);
dest.writeString(mInformation);
dest.writeParcelable(mWifiConfig, flags);
}
@FlaggedApi(Flags.FLAG_ANDROID_V_WIFI_API)
@NonNull
/**
* Implement the Parcelable interface.
*/
public static final Creator