Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,7 @@ LOCAL_SRC_FILES += \ core/java/android/hardware/location/IGeofenceHardwareMonitorCallback.aidl \ core/java/android/hardware/soundtrigger/IRecognitionStatusCallback.aidl \ core/java/android/hardware/usb/IUsbManager.aidl \ core/java/android/net/ICaptivePortal.aidl \ core/java/android/net/IConnectivityManager.aidl \ core/java/android/net/IEthernetManager.aidl \ core/java/android/net/IEthernetServiceListener.aidl \ Loading api/current.txt +9 −3 Original line number Diff line number Diff line Loading @@ -18101,6 +18101,14 @@ package android.mtp { package android.net { public class CaptivePortal implements android.os.Parcelable { method public int describeContents(); method public void ignoreNetwork(); method public void reportCaptivePortalDismissed(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR; } public class ConnectivityManager { method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public boolean bindProcessToNetwork(android.net.Network); Loading @@ -18117,7 +18125,6 @@ package android.net { method public android.net.NetworkInfo getNetworkInfo(android.net.Network); method public deprecated int getNetworkPreference(); method public static deprecated android.net.Network getProcessDefaultNetwork(); method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String); method public boolean isActiveNetworkMetered(); method public boolean isDefaultNetworkActive(); method public static deprecated boolean isNetworkTypeValid(int); Loading @@ -18126,7 +18133,6 @@ package android.net { method public void releaseNetworkRequest(android.app.PendingIntent); method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public deprecated void reportBadNetwork(android.net.Network); method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String); method public void reportNetworkConnectivity(android.net.Network, boolean); method public boolean requestBandwidthUpdate(android.net.Network); method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback); Loading @@ -18139,7 +18145,7 @@ package android.net { field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1 field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo"; field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover"; field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK"; api/system-current.txt +9 −3 Original line number Diff line number Diff line Loading @@ -19611,6 +19611,14 @@ package android.mtp { package android.net { public class CaptivePortal implements android.os.Parcelable { method public int describeContents(); method public void ignoreNetwork(); method public void reportCaptivePortalDismissed(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR; } public class ConnectivityManager { method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public boolean bindProcessToNetwork(android.net.Network); Loading @@ -19627,7 +19635,6 @@ package android.net { method public android.net.NetworkInfo getNetworkInfo(android.net.Network); method public deprecated int getNetworkPreference(); method public static deprecated android.net.Network getProcessDefaultNetwork(); method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String); method public boolean isActiveNetworkMetered(); method public boolean isDefaultNetworkActive(); method public static deprecated boolean isNetworkTypeValid(int); Loading @@ -19636,7 +19643,6 @@ package android.net { method public void releaseNetworkRequest(android.app.PendingIntent); method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public deprecated void reportBadNetwork(android.net.Network); method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String); method public void reportNetworkConnectivity(android.net.Network, boolean); method public boolean requestBandwidthUpdate(android.net.Network); method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback); Loading @@ -19649,7 +19655,7 @@ package android.net { field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1 field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo"; field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover"; field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK"; core/java/android/net/CaptivePortal.java 0 → 100644 +108 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed urnder 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; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; /** * A class allowing apps handling the {@link ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN} * activity to indicate to the system different outcomes of captive portal sign in. This class is * passed as an extra named {@link ConnectivityManager#EXTRA_CAPTIVE_PORTAL} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} activity. */ public class CaptivePortal implements Parcelable { /** @hide */ public static final int APP_RETURN_DISMISSED = 0; /** @hide */ public static final int APP_RETURN_UNWANTED = 1; /** @hide */ public static final int APP_RETURN_WANTED_AS_IS = 2; private final IBinder mBinder; /** @hide */ public CaptivePortal(IBinder binder) { mBinder = binder; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeStrongBinder(mBinder); } public static final Parcelable.Creator<CaptivePortal> CREATOR = new Parcelable.Creator<CaptivePortal>() { @Override public CaptivePortal createFromParcel(Parcel in) { return new CaptivePortal(in.readStrongBinder()); } @Override public CaptivePortal[] newArray(int size) { return new CaptivePortal[size]; } }; /** * Indicate to the system that the captive portal has been * dismissed. In response the framework will re-evaluate the network's * connectivity and might take further action thereafter. */ public void reportCaptivePortalDismissed() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_DISMISSED); } catch (RemoteException e) { } } /** * Indicate to the system that the user does not want to pursue signing in to the * captive portal and the system should continue to prefer other networks * without captive portals for use as the default active data network. The * system will not retest the network for a captive portal so as to avoid * disturbing the user with further sign in to network notifications. */ public void ignoreNetwork() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_UNWANTED); } catch (RemoteException e) { } } /** * Indicate to the system the user wants to use this network as is, even though * the captive portal is still in place. The system will treat the network * as if it did not have a captive portal when selecting the network to use * as the default active data network. This may result in this network * becoming the default active data network, which could disrupt network * connectivity for apps because the captive portal is still in place. * @hide */ public void useNetwork() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_WANTED_AS_IS); } catch (RemoteException e) { } } } core/java/android/net/ConnectivityManager.java +21 −98 Original line number Diff line number Diff line Loading @@ -102,26 +102,26 @@ public class ConnectivityManager { * portal, which is blocking Internet connectivity. The user was presented * with a notification that network sign in is required, * and the user invoked the notification's action indicating they * desire to sign in to the network. Apps handling this action should * desire to sign in to the network. Apps handling this activity should * facilitate signing in to the network. This action includes a * {@link Network} typed extra called {@link #EXTRA_NETWORK} that represents * the network presenting the captive portal; all communication with the * captive portal must be done using this {@code Network} object. * <p/> * When the app handling this action believes the user has signed in to * the network and the captive portal has been dismissed, the app should call * {@link #reportCaptivePortalDismissed} so the system can reevaluate the network. * If reevaluation finds the network no longer subject to a captive portal, * the network may become the default active data network. * <p/> * When the app handling this action believes the user explicitly wants * This activity includes a {@link CaptivePortal} extra named * {@link #EXTRA_CAPTIVE_PORTAL} that can be used to indicate different * outcomes of the captive portal sign in to the system: * <ul> * <li> When the app handling this action believes the user has signed in to * the network and the captive portal has been dismissed, the app should * call {@link CaptivePortal#reportCaptivePortalDismissed} so the system can * reevaluate the network. If reevaluation finds the network no longer * subject to a captive portal, the network may become the default active * data network. </li> * <li> When the app handling this action believes the user explicitly wants * to ignore the captive portal and the network, the app should call * {@link #ignoreNetworkWithCaptivePortal}. * <p/> * Note that this action includes a {@code String} extra named * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} that must * be passed in to {@link #reportCaptivePortalDismissed} and * {@link #ignoreNetworkWithCaptivePortal}. * {@link CaptivePortal#ignoreNetwork}. </li> * </ul> */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; Loading Loading @@ -187,16 +187,15 @@ public class ConnectivityManager { * {@hide} */ public static final String EXTRA_INET_CONDITION = "inetCondition"; /** * The lookup key for a string that is sent out with * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}. This string must be * passed in to {@link #reportCaptivePortalDismissed} and * {@link #ignoreNetworkWithCaptivePortal}. Retrieve it with * {@link android.content.Intent#getStringExtra(String)}. * The lookup key for a {@link CaptivePortal} object included with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} intent. The {@code CaptivePortal} * object can be used to either indicate to the system that the captive * portal has been dismissed or that the user does not want to pursue * signing in to captive portal. Retrieve it with * {@link android.content.Intent#getParcelableExtra(String)}. */ public static final String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; /** * Broadcast action to indicate the change of data activity status * (idle or active) on a network in a recent period. Loading Loading @@ -1779,82 +1778,6 @@ public class ConnectivityManager { } } /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_DISMISSED = 0; /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_UNWANTED = 1; /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS = 2; /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate to the system that the captive portal has been * dismissed. In response the framework will re-evaluate the network's * connectivity and might take further action thereafter. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. */ public void reportCaptivePortalDismissed(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_DISMISSED, actionToken); } catch (RemoteException e) { } } /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate that the user does not want to pursue signing in to * captive portal and the system should continue to prefer other networks * without captive portals for use as the default active data network. The * system will not retest the network for a captive portal so as to avoid * disturbing the user with further sign in to network notifications. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. */ public void ignoreNetworkWithCaptivePortal(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_UNWANTED, actionToken); } catch (RemoteException e) { } } /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate the user wants to use this network as is, even though * the captive portal is still in place. The system will treat the network * as if it did not have a captive portal when selecting the network to use * as the default active data network. This may result in this network * becoming the default active data network, which could disrupt network * connectivity for apps because the captive portal is still in place. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @hide */ public void useNetworkWithCaptivePortal(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS, actionToken); } catch (RemoteException e) { } } /** * Set a network-independent global http proxy. This is not normally what you want * for typical HTTP proxies - they are general network dependent. However if you're Loading Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,7 @@ LOCAL_SRC_FILES += \ core/java/android/hardware/location/IGeofenceHardwareMonitorCallback.aidl \ core/java/android/hardware/soundtrigger/IRecognitionStatusCallback.aidl \ core/java/android/hardware/usb/IUsbManager.aidl \ core/java/android/net/ICaptivePortal.aidl \ core/java/android/net/IConnectivityManager.aidl \ core/java/android/net/IEthernetManager.aidl \ core/java/android/net/IEthernetServiceListener.aidl \ Loading
api/current.txt +9 −3 Original line number Diff line number Diff line Loading @@ -18101,6 +18101,14 @@ package android.mtp { package android.net { public class CaptivePortal implements android.os.Parcelable { method public int describeContents(); method public void ignoreNetwork(); method public void reportCaptivePortalDismissed(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR; } public class ConnectivityManager { method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public boolean bindProcessToNetwork(android.net.Network); Loading @@ -18117,7 +18125,6 @@ package android.net { method public android.net.NetworkInfo getNetworkInfo(android.net.Network); method public deprecated int getNetworkPreference(); method public static deprecated android.net.Network getProcessDefaultNetwork(); method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String); method public boolean isActiveNetworkMetered(); method public boolean isDefaultNetworkActive(); method public static deprecated boolean isNetworkTypeValid(int); Loading @@ -18126,7 +18133,6 @@ package android.net { method public void releaseNetworkRequest(android.app.PendingIntent); method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public deprecated void reportBadNetwork(android.net.Network); method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String); method public void reportNetworkConnectivity(android.net.Network, boolean); method public boolean requestBandwidthUpdate(android.net.Network); method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback); Loading @@ -18139,7 +18145,7 @@ package android.net { field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1 field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo"; field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover"; field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK";
api/system-current.txt +9 −3 Original line number Diff line number Diff line Loading @@ -19611,6 +19611,14 @@ package android.mtp { package android.net { public class CaptivePortal implements android.os.Parcelable { method public int describeContents(); method public void ignoreNetwork(); method public void reportCaptivePortalDismissed(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.CaptivePortal> CREATOR; } public class ConnectivityManager { method public void addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public boolean bindProcessToNetwork(android.net.Network); Loading @@ -19627,7 +19635,6 @@ package android.net { method public android.net.NetworkInfo getNetworkInfo(android.net.Network); method public deprecated int getNetworkPreference(); method public static deprecated android.net.Network getProcessDefaultNetwork(); method public void ignoreNetworkWithCaptivePortal(android.net.Network, java.lang.String); method public boolean isActiveNetworkMetered(); method public boolean isDefaultNetworkActive(); method public static deprecated boolean isNetworkTypeValid(int); Loading @@ -19636,7 +19643,6 @@ package android.net { method public void releaseNetworkRequest(android.app.PendingIntent); method public void removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public deprecated void reportBadNetwork(android.net.Network); method public void reportCaptivePortalDismissed(android.net.Network, java.lang.String); method public void reportNetworkConnectivity(android.net.Network, boolean); method public boolean requestBandwidthUpdate(android.net.Network); method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback); Loading @@ -19649,7 +19655,7 @@ package android.net { field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1 field public static final java.lang.String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; field public static final java.lang.String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo"; field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover"; field public static final java.lang.String EXTRA_NETWORK = "android.net.extra.NETWORK";
core/java/android/net/CaptivePortal.java 0 → 100644 +108 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed urnder 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; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; /** * A class allowing apps handling the {@link ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN} * activity to indicate to the system different outcomes of captive portal sign in. This class is * passed as an extra named {@link ConnectivityManager#EXTRA_CAPTIVE_PORTAL} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} activity. */ public class CaptivePortal implements Parcelable { /** @hide */ public static final int APP_RETURN_DISMISSED = 0; /** @hide */ public static final int APP_RETURN_UNWANTED = 1; /** @hide */ public static final int APP_RETURN_WANTED_AS_IS = 2; private final IBinder mBinder; /** @hide */ public CaptivePortal(IBinder binder) { mBinder = binder; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeStrongBinder(mBinder); } public static final Parcelable.Creator<CaptivePortal> CREATOR = new Parcelable.Creator<CaptivePortal>() { @Override public CaptivePortal createFromParcel(Parcel in) { return new CaptivePortal(in.readStrongBinder()); } @Override public CaptivePortal[] newArray(int size) { return new CaptivePortal[size]; } }; /** * Indicate to the system that the captive portal has been * dismissed. In response the framework will re-evaluate the network's * connectivity and might take further action thereafter. */ public void reportCaptivePortalDismissed() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_DISMISSED); } catch (RemoteException e) { } } /** * Indicate to the system that the user does not want to pursue signing in to the * captive portal and the system should continue to prefer other networks * without captive portals for use as the default active data network. The * system will not retest the network for a captive portal so as to avoid * disturbing the user with further sign in to network notifications. */ public void ignoreNetwork() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_UNWANTED); } catch (RemoteException e) { } } /** * Indicate to the system the user wants to use this network as is, even though * the captive portal is still in place. The system will treat the network * as if it did not have a captive portal when selecting the network to use * as the default active data network. This may result in this network * becoming the default active data network, which could disrupt network * connectivity for apps because the captive portal is still in place. * @hide */ public void useNetwork() { try { ICaptivePortal.Stub.asInterface(mBinder).appResponse(APP_RETURN_WANTED_AS_IS); } catch (RemoteException e) { } } }
core/java/android/net/ConnectivityManager.java +21 −98 Original line number Diff line number Diff line Loading @@ -102,26 +102,26 @@ public class ConnectivityManager { * portal, which is blocking Internet connectivity. The user was presented * with a notification that network sign in is required, * and the user invoked the notification's action indicating they * desire to sign in to the network. Apps handling this action should * desire to sign in to the network. Apps handling this activity should * facilitate signing in to the network. This action includes a * {@link Network} typed extra called {@link #EXTRA_NETWORK} that represents * the network presenting the captive portal; all communication with the * captive portal must be done using this {@code Network} object. * <p/> * When the app handling this action believes the user has signed in to * the network and the captive portal has been dismissed, the app should call * {@link #reportCaptivePortalDismissed} so the system can reevaluate the network. * If reevaluation finds the network no longer subject to a captive portal, * the network may become the default active data network. * <p/> * When the app handling this action believes the user explicitly wants * This activity includes a {@link CaptivePortal} extra named * {@link #EXTRA_CAPTIVE_PORTAL} that can be used to indicate different * outcomes of the captive portal sign in to the system: * <ul> * <li> When the app handling this action believes the user has signed in to * the network and the captive portal has been dismissed, the app should * call {@link CaptivePortal#reportCaptivePortalDismissed} so the system can * reevaluate the network. If reevaluation finds the network no longer * subject to a captive portal, the network may become the default active * data network. </li> * <li> When the app handling this action believes the user explicitly wants * to ignore the captive portal and the network, the app should call * {@link #ignoreNetworkWithCaptivePortal}. * <p/> * Note that this action includes a {@code String} extra named * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} that must * be passed in to {@link #reportCaptivePortalDismissed} and * {@link #ignoreNetworkWithCaptivePortal}. * {@link CaptivePortal#ignoreNetwork}. </li> * </ul> */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL"; Loading Loading @@ -187,16 +187,15 @@ public class ConnectivityManager { * {@hide} */ public static final String EXTRA_INET_CONDITION = "inetCondition"; /** * The lookup key for a string that is sent out with * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN}. This string must be * passed in to {@link #reportCaptivePortalDismissed} and * {@link #ignoreNetworkWithCaptivePortal}. Retrieve it with * {@link android.content.Intent#getStringExtra(String)}. * The lookup key for a {@link CaptivePortal} object included with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} intent. The {@code CaptivePortal} * object can be used to either indicate to the system that the captive * portal has been dismissed or that the user does not want to pursue * signing in to captive portal. Retrieve it with * {@link android.content.Intent#getParcelableExtra(String)}. */ public static final String EXTRA_CAPTIVE_PORTAL_TOKEN = "captivePortalToken"; public static final String EXTRA_CAPTIVE_PORTAL = "android.net.extra.CAPTIVE_PORTAL"; /** * Broadcast action to indicate the change of data activity status * (idle or active) on a network in a recent period. Loading Loading @@ -1779,82 +1778,6 @@ public class ConnectivityManager { } } /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_DISMISSED = 0; /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_UNWANTED = 1; /** {@hide} */ public static final int CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS = 2; /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate to the system that the captive portal has been * dismissed. In response the framework will re-evaluate the network's * connectivity and might take further action thereafter. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. */ public void reportCaptivePortalDismissed(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_DISMISSED, actionToken); } catch (RemoteException e) { } } /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate that the user does not want to pursue signing in to * captive portal and the system should continue to prefer other networks * without captive portals for use as the default active data network. The * system will not retest the network for a captive portal so as to avoid * disturbing the user with further sign in to network notifications. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. */ public void ignoreNetworkWithCaptivePortal(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_UNWANTED, actionToken); } catch (RemoteException e) { } } /** * Called by an app handling the {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} * action to indicate the user wants to use this network as is, even though * the captive portal is still in place. The system will treat the network * as if it did not have a captive portal when selecting the network to use * as the default active data network. This may result in this network * becoming the default active data network, which could disrupt network * connectivity for apps because the captive portal is still in place. * * @param network The {@link Network} object passed via * {@link #EXTRA_NETWORK} with the * {@link #ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @param actionToken The {@code String} passed via * {@link #EXTRA_CAPTIVE_PORTAL_TOKEN} with the * {@code ACTION_CAPTIVE_PORTAL_SIGN_IN} action. * @hide */ public void useNetworkWithCaptivePortal(Network network, String actionToken) { try { mService.captivePortalAppResponse(network, CAPTIVE_PORTAL_APP_RETURN_WANTED_AS_IS, actionToken); } catch (RemoteException e) { } } /** * Set a network-independent global http proxy. This is not normally what you want * for typical HTTP proxies - they are general network dependent. However if you're Loading