Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 115861da authored by Nate Jiang's avatar Nate Jiang Committed by Android (Google) Code Review
Browse files

Merge "[Suggestion] Add API to help app get user approval status."

parents 990f3672 30b8b6b9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -31682,6 +31682,7 @@ package android.net.wifi {
    method public android.net.DhcpInfo getDhcpInfo();
    method public int getMaxNumberOfNetworkSuggestionsPerApp();
    method @IntRange(from=0) public int getMaxSignalLevel();
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getNetworkSuggestionUserApprovalStatus();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public java.util.List<android.net.wifi.WifiNetworkSuggestion> getNetworkSuggestions();
    method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", "android.permission.NETWORK_SETUP_WIZARD"}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
    method public java.util.List<android.net.wifi.ScanResult> getScanResults();
@@ -31752,6 +31753,11 @@ package android.net.wifi {
    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL = 1; // 0x1
    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID = 5; // 0x5
    field public static final int STATUS_NETWORK_SUGGESTIONS_SUCCESS = 0; // 0x0
    field public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_CARRIER_PRIVILEGE = 4; // 0x4
    field public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER = 2; // 0x2
    field public static final int STATUS_SUGGESTION_APPROVAL_PENDING = 1; // 0x1
    field public static final int STATUS_SUGGESTION_APPROVAL_REJECTED_BY_USER = 3; // 0x3
    field public static final int STATUS_SUGGESTION_APPROVAL_UNKNOWN = 0; // 0x0
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_ASSOCIATION = 1; // 0x1
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_AUTHENTICATION = 2; // 0x2
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_IP_PROVISIONING = 3; // 0x3
+6 −0
Original line number Diff line number Diff line
@@ -323,6 +323,7 @@ package android.net.wifi {
    method public android.net.DhcpInfo getDhcpInfo();
    method public int getMaxNumberOfNetworkSuggestionsPerApp();
    method @IntRange(from=0) public int getMaxSignalLevel();
    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public int getNetworkSuggestionUserApprovalStatus();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public java.util.List<android.net.wifi.WifiNetworkSuggestion> getNetworkSuggestions();
    method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD}) public java.util.List<android.net.wifi.hotspot2.PasspointConfiguration> getPasspointConfigurations();
    method public java.util.List<android.net.wifi.ScanResult> getScanResults();
@@ -393,6 +394,11 @@ package android.net.wifi {
    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL = 1; // 0x1
    field public static final int STATUS_NETWORK_SUGGESTIONS_ERROR_REMOVE_INVALID = 5; // 0x5
    field public static final int STATUS_NETWORK_SUGGESTIONS_SUCCESS = 0; // 0x0
    field public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_CARRIER_PRIVILEGE = 4; // 0x4
    field public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER = 2; // 0x2
    field public static final int STATUS_SUGGESTION_APPROVAL_PENDING = 1; // 0x1
    field public static final int STATUS_SUGGESTION_APPROVAL_REJECTED_BY_USER = 3; // 0x3
    field public static final int STATUS_SUGGESTION_APPROVAL_UNKNOWN = 0; // 0x0
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_ASSOCIATION = 1; // 0x1
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_AUTHENTICATION = 2; // 0x2
    field public static final int STATUS_SUGGESTION_CONNECTION_FAILURE_IP_PROVISIONING = 3; // 0x3
+2 −0
Original line number Diff line number Diff line
@@ -275,4 +275,6 @@ interface IWifiManager
    void setAutoWakeupEnabled(boolean enable);

    boolean isAutoWakeupEnabled();

    int getNetworkSuggestionUserApprovalStatus(String packageName);
}
+59 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.os.Looper;
import android.os.RemoteException;
import android.os.WorkSource;
import android.os.connectivity.WifiActivityEnergyInfo;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.CloseGuard;
import android.util.Log;
@@ -263,6 +264,44 @@ public class WifiManager {
    @Retention(RetentionPolicy.SOURCE)
    public @interface SuggestionConnectionStatusCode {}

    /**
     * Status code if suggestion approval status is unknown, an App which hasn't made any
     * suggestions will get this code.
     */
    public static final int STATUS_SUGGESTION_APPROVAL_UNKNOWN = 0;

    /**
     * Status code if the calling app is still pending user approval for suggestions.
     */
    public static final int STATUS_SUGGESTION_APPROVAL_PENDING = 1;

    /**
     * Status code if the calling app got the user approval for suggestions.
     */
    public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER = 2;

    /**
     * Status code if the calling app suggestions were rejected by the user.
     */
    public static final int STATUS_SUGGESTION_APPROVAL_REJECTED_BY_USER = 3;

    /**
     * Status code if the calling app was approved by virtue of being a carrier privileged app.
     * @see TelephonyManager#hasCarrierPrivileges().
     */
    public static final int STATUS_SUGGESTION_APPROVAL_APPROVED_BY_CARRIER_PRIVILEGE = 4;

    /** @hide */
    @IntDef(prefix = {"STATUS_SUGGESTION_APPROVAL_"},
            value = {STATUS_SUGGESTION_APPROVAL_UNKNOWN,
                    STATUS_SUGGESTION_APPROVAL_PENDING,
                    STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER,
                    STATUS_SUGGESTION_APPROVAL_REJECTED_BY_USER,
                    STATUS_SUGGESTION_APPROVAL_APPROVED_BY_CARRIER_PRIVILEGE
            })
    @Retention(RetentionPolicy.SOURCE)
    public @interface SuggestionUserApprovalStatus {}

    /**
     * Broadcast intent action indicating whether Wi-Fi scanning is currently available.
     * Available extras:
@@ -2009,6 +2048,26 @@ public class WifiManager {
                : NETWORK_SUGGESTIONS_MAX_PER_APP_HIGH_RAM;
    }

    /**
     * Get the Suggestion approval status of the calling app. When an app makes suggestions using
     * the {@link #addNetworkSuggestions(List)} API they may trigger a user approval flow. This API
     * provides the current approval status.
     *
     * @return Status code for the user approval. One of the STATUS_SUGGESTION_APPROVAL_ values.
     * @throws {@link SecurityException} if the caller is missing required permissions.
     */
    @RequiresPermission(ACCESS_WIFI_STATE)
    public @SuggestionUserApprovalStatus int getNetworkSuggestionUserApprovalStatus() {
        if (!SdkLevel.isAtLeastS()) {
            throw new UnsupportedOperationException();
        }
        try {
            return mService.getNetworkSuggestionUserApprovalStatus(mContext.getOpPackageName());
        } catch (RemoteException e) {
            throw e.rethrowAsRuntimeException();
        }
    }

    /**
     * Add or update a Passpoint configuration.  The configuration provides a credential
     * for connecting to Passpoint networks that are operated by the Passpoint
+9 −0
Original line number Diff line number Diff line
@@ -2415,4 +2415,13 @@ public class WifiManagerTest {
        assertFalse(mWifiManager.isScanAlwaysAvailable());
        verify(mWifiService).isScanAlwaysAvailable();
    }

    @Test
    public void testGetNetworkSuggestionUserApprovalStatus() throws Exception {
        when(mWifiService.getNetworkSuggestionUserApprovalStatus(TEST_PACKAGE_NAME))
                .thenReturn(WifiManager.STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER);
        assertEquals(WifiManager.STATUS_SUGGESTION_APPROVAL_APPROVED_BY_USER,
                mWifiManager.getNetworkSuggestionUserApprovalStatus());
        verify(mWifiService).getNetworkSuggestionUserApprovalStatus(TEST_PACKAGE_NAME);
    }
}