Fields Summary |
---|
private static final String | TAG |
public static final String | CONNECTIVITY_ACTIONA change in network connectivity has occurred. A default connection has either
been established or lost. The NetworkInfo for the affected network is
sent as an extra; it should be consulted to see what kind of
connectivity event occurred.
If this is a connection that was the result of failing over from a
disconnected network, then the FAILOVER_CONNECTION boolean extra is
set to true.
For a loss of connectivity, if the connectivity manager is attempting
to connect (or has already connected) to another network, the
NetworkInfo for the new network is also passed as an extra. This lets
any receivers of the broadcast know that they should not necessarily
tell the user that no data traffic will be possible. Instead, the
receiver should expect another broadcast soon, indicating either that
the failover attempt succeeded (and so there is still overall data
connectivity), or that the failover attempt failed, meaning that all
connectivity has been lost.
For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY
is set to {@code true} if there are no connected networks at all. |
public static final String | CONNECTIVITY_ACTION_IMMEDIATEIdentical to {@link #CONNECTIVITY_ACTION} broadcast, but sent without any
historic {@link Settings.Global#CONNECTIVITY_CHANGE_DELAY}. |
public static final String | EXTRA_NETWORK_INFOThe lookup key for a {@link NetworkInfo} object. Retrieve with
{@link android.content.Intent#getParcelableExtra(String)}. |
public static final String | EXTRA_NETWORK_TYPENetwork type which triggered a {@link #CONNECTIVITY_ACTION} broadcast.
Can be used with {@link #getNetworkInfo(int)} to get {@link NetworkInfo}
state based on the calling application. |
public static final String | EXTRA_IS_FAILOVERThe lookup key for a boolean that indicates whether a connect event
is for a network to which the connectivity manager was failing over
following a disconnect on another network.
Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. |
public static final String | EXTRA_OTHER_NETWORK_INFOThe lookup key for a {@link NetworkInfo} object. This is supplied when
there is another network that it may be possible to connect to. Retrieve with
{@link android.content.Intent#getParcelableExtra(String)}. |
public static final String | EXTRA_NO_CONNECTIVITYThe lookup key for a boolean that indicates whether there is a
complete lack of connectivity, i.e., no network is available.
Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. |
public static final String | EXTRA_REASONThe lookup key for a string that indicates why an attempt to connect
to a network failed. The string has no particular structure. It is
intended to be used in notifications presented to users. Retrieve
it with {@link android.content.Intent#getStringExtra(String)}. |
public static final String | EXTRA_EXTRA_INFOThe lookup key for a string that provides optionally supplied
extra information about the network state. The information
may be passed up from the lower networking layers, and its
meaning may be specific to a particular network type. Retrieve
it with {@link android.content.Intent#getStringExtra(String)}. |
public static final String | EXTRA_INET_CONDITIONThe lookup key for an int that provides information about
our connection to the internet at large. 0 indicates no connection,
100 indicates a great connection. Retrieve it with
{@link android.content.Intent#getIntExtra(String, int)}.
{@hide} |
public static final String | ACTION_DATA_ACTIVITY_CHANGEBroadcast action to indicate the change of data activity status
(idle or active) on a network in a recent period.
The network becomes active when data transmission is started, or
idle if there is no data transmission for a period of time.
{@hide} |
public static final String | EXTRA_DEVICE_TYPEThe lookup key for an enum that indicates the network device type on which this data activity
change happens.
{@hide} |
public static final String | EXTRA_IS_ACTIVEThe lookup key for a boolean that indicates the device is active or not. {@code true} means
it is actively sending or receiving data and {@code false} means it is idle.
{@hide} |
public static final String | EXTRA_REALTIME_NSThe lookup key for a long that contains the timestamp (nanos) of the radio state change.
{@hide} |
public static final String | ACTION_BACKGROUND_DATA_SETTING_CHANGEDBroadcast Action: The setting for background data usage has changed
values. Use {@link #getBackgroundDataSetting()} to get the current value.
If an application uses the network in the background, it should listen
for this broadcast and stop using the background data if the value is
{@code false}.
|
public static final String | INET_CONDITION_ACTIONBroadcast Action: The network connection may not be good
uses {@code ConnectivityManager.EXTRA_INET_CONDITION} and
{@code ConnectivityManager.EXTRA_NETWORK_INFO} to specify
the network and it's condition. |
public static final String | ACTION_TETHER_STATE_CHANGEDBroadcast Action: A tetherable connection has come or gone.
Uses {@code ConnectivityManager.EXTRA_AVAILABLE_TETHER},
{@code ConnectivityManager.EXTRA_ACTIVE_TETHER} and
{@code ConnectivityManager.EXTRA_ERRORED_TETHER} to indicate
the current state of tethering. Each include a list of
interface names in that state (may be empty). |
public static final String | EXTRA_AVAILABLE_TETHER |
public static final String | EXTRA_ACTIVE_TETHER |
public static final String | EXTRA_ERRORED_TETHER |
public static final String | ACTION_CAPTIVE_PORTAL_TEST_COMPLETEDBroadcast Action: The captive portal tracker has finished its test.
Sent only while running Setup Wizard, in lieu of showing a user
notification. |
public static final String | EXTRA_IS_CAPTIVE_PORTALThe lookup key for a boolean that indicates whether a captive portal was detected.
Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. |
public static final int | TYPE_NONEThe absence of a connection type. |
public static final int | TYPE_MOBILEThe Mobile data connection. When active, all data traffic
will use this network type's interface by default
(it has a default route) |
public static final int | TYPE_WIFIThe WIFI data connection. When active, all data traffic
will use this network type's interface by default
(it has a default route). |
public static final int | TYPE_MOBILE_MMSAn MMS-specific Mobile data connection. This network type may use the
same network interface as {@link #TYPE_MOBILE} or it may use a different
one. This is used by applications needing to talk to the carrier's
Multimedia Messaging Service servers. |
public static final int | TYPE_MOBILE_SUPLA SUPL-specific Mobile data connection. This network type may use the
same network interface as {@link #TYPE_MOBILE} or it may use a different
one. This is used by applications needing to talk to the carrier's
Secure User Plane Location servers for help locating the device. |
public static final int | TYPE_MOBILE_DUNA DUN-specific Mobile data connection. This network type may use the
same network interface as {@link #TYPE_MOBILE} or it may use a different
one. This is sometimes by the system when setting up an upstream connection
for tethering so that the carrier is aware of DUN traffic. |
public static final int | TYPE_MOBILE_HIPRIA High Priority Mobile data connection. This network type uses the
same network interface as {@link #TYPE_MOBILE} but the routing setup
is different. Only requesting processes will have access to the
Mobile DNS servers and only IP's explicitly requested via {@link #requestRouteToHost}
will route over this interface if no default route exists. |
public static final int | TYPE_WIMAXThe WiMAX data connection. When active, all data traffic
will use this network type's interface by default
(it has a default route). |
public static final int | TYPE_BLUETOOTHThe Bluetooth data connection. When active, all data traffic
will use this network type's interface by default
(it has a default route). |
public static final int | TYPE_DUMMYDummy data connection. This should not be used on shipping devices. |
public static final int | TYPE_ETHERNETThe Ethernet data connection. When active, all data traffic
will use this network type's interface by default
(it has a default route). |
public static final int | TYPE_MOBILE_FOTAOver the air Administration.
{@hide} |
public static final int | TYPE_MOBILE_IMSIP Multimedia Subsystem.
{@hide} |
public static final int | TYPE_MOBILE_CBSCarrier Branded Services.
{@hide} |
public static final int | TYPE_WIFI_P2PA Wi-Fi p2p connection. Only requesting processes will have access to
the peers connected.
{@hide} |
public static final int | TYPE_MOBILE_IAThe network to use for initially attaching to the network
{@hide} |
public static final int | TYPE_MOBILE_EMERGENCYEmergency PDN connection for emergency calls
{@hide} |
public static final int | TYPE_PROXYThe network that uses proxy to achieve connectivity.
{@hide} |
public static final int | TYPE_VPNA virtual network using one or more native bearers.
It may or may not be providing security services. |
public static final int | MAX_RADIO_TYPE{@hide} |
public static final int | MAX_NETWORK_TYPE{@hide} |
public static final int | DEFAULT_NETWORK_PREFERENCEIf you want to set the default network preference,you can directly
change the networkAttributes array in framework's config.xml. |
public static final int | REQUEST_ID_UNSET |
public static final int | NETID_UNSETA NetID indicating no Network is selected.
Keep in sync with bionic/libc/dns/include/resolv_netid.h |
private final IConnectivityManager | mService |
private static ConnectivityManager | sInstanceA kludge to facilitate static access where a Context pointer isn't available, like in the
case of the static set/getProcessDefaultNetwork methods and from the Network class.
TODO: Remove this after deprecating the static methods in favor of non-static methods or
methods that take a Context argument. |
private android.os.INetworkManagementService | mNMService |
private static HashMap | sLegacyRequests |
private final android.util.ArrayMap | mNetworkActivityListeners |
public static final int | TETHER_ERROR_NO_ERROR{@hide} |
public static final int | TETHER_ERROR_UNKNOWN_IFACE{@hide} |
public static final int | TETHER_ERROR_SERVICE_UNAVAIL{@hide} |
public static final int | TETHER_ERROR_UNSUPPORTED{@hide} |
public static final int | TETHER_ERROR_UNAVAIL_IFACE{@hide} |
public static final int | TETHER_ERROR_MASTER_ERROR{@hide} |
public static final int | TETHER_ERROR_TETHER_IFACE_ERROR{@hide} |
public static final int | TETHER_ERROR_UNTETHER_IFACE_ERROR{@hide} |
public static final int | TETHER_ERROR_ENABLE_NAT_ERROR{@hide} |
public static final int | TETHER_ERROR_DISABLE_NAT_ERROR{@hide} |
public static final int | TETHER_ERROR_IFACE_CFG_ERROR{@hide} |
private static final int | BASE |
public static final int | CALLBACK_PRECHECK |
public static final int | CALLBACK_AVAILABLE |
public static final int | CALLBACK_LOSING |
public static final int | CALLBACK_LOST |
public static final int | CALLBACK_UNAVAIL |
public static final int | CALLBACK_CAP_CHANGED |
public static final int | CALLBACK_IP_CHANGED |
public static final int | CALLBACK_RELEASED |
public static final int | CALLBACK_EXIT |
private static final int | EXPIRE_LEGACY_REQUEST |
static final HashMap | sNetworkCallback |
static final AtomicInteger | sCallbackRefCount |
static CallbackHandler | sCallbackHandler |
private static final int | LISTEN |
private static final int | REQUEST |
public static final int | MAX_NETWORK_REQUEST_TIMEOUT_MSThe maximum number of milliseconds the framework will look for a suitable network
during a timeout-equiped call to {@link requestNetwork}.
{@hide} |
public static final String | EXTRA_NETWORKThe lookup key for a {@link Network} object included with the intent after
successfully finding a network for the applications request. Retrieve it with
{@link android.content.Intent#getParcelableExtra(String)}.
Note that if you intend to invoke (@link #setProcessDefaultNetwork(Network)) or
{@link Network#openConnection(java.net.URL)} then you must get a
ConnectivityManager instance before doing so. |
public static final String | EXTRA_NETWORK_REQUESTThe lookup key for a {@link NetworkRequest} object included with the intent after
successfully finding a network for the applications request. Retrieve it with
{@link android.content.Intent#getParcelableExtra(String)}. |
Methods Summary |
---|
public void | addDefaultNetworkActiveListener(android.net.ConnectivityManager$OnNetworkActiveListener l)Start listening to reports when the system's default data network is active, meaning it is
a good time to perform network traffic. Use {@link #isDefaultNetworkActive()}
to determine the current state of the system's default network after registering the
listener.
If the process default network has been set with
{@link ConnectivityManager#setProcessDefaultNetwork} this function will not
reflect the process's default, but the system default.
INetworkActivityListener rl = new INetworkActivityListener.Stub() {
@Override
public void onNetworkActive() throws RemoteException {
l.onNetworkActive();
}
};
try {
getNetworkManagementService().registerNetworkActivityListener(rl);
mNetworkActivityListeners.put(l, rl);
} catch (RemoteException e) {
}
|
public void | captivePortalCheckCompleted(NetworkInfo info, boolean isCaptivePortal)Signal that the captive portal check on the indicated network
is complete and whether its a captive portal or not.
try {
mService.captivePortalCheckCompleted(info, isCaptivePortal);
} catch (RemoteException e) {
}
|
public int | checkMobileProvisioning(int suggestedTimeOutMs)Check mobile provisioning.
int timeOutMs = -1;
try {
timeOutMs = mService.checkMobileProvisioning(suggestedTimeOutMs);
} catch (RemoteException e) {
}
return timeOutMs;
|
private void | checkPendingIntent(android.app.PendingIntent intent)
if (intent == null) {
throw new IllegalArgumentException("PendingIntent cannot be null.");
}
|
private void | decCallbackHandlerRefCount()
synchronized(sCallbackRefCount) {
if (sCallbackRefCount.decrementAndGet() == 0) {
sCallbackHandler.obtainMessage(CALLBACK_EXIT).sendToTarget();
sCallbackHandler = null;
}
}
|
public static final void | enforceTetherChangePermission(android.content.Context context){@hide
if (context.getResources().getStringArray(
com.android.internal.R.array.config_mobile_hotspot_provision_app).length == 2) {
// Have a provisioning app - must only let system apps (which check this app)
// turn on tethering
context.enforceCallingOrSelfPermission(
android.Manifest.permission.CONNECTIVITY_INTERNAL, "ConnectivityService");
} else {
context.enforceCallingOrSelfPermission(
android.Manifest.permission.CHANGE_NETWORK_STATE, "ConnectivityService");
}
|
private void | expireRequest(NetworkCapabilities netCap, int sequenceNum)
int ourSeqNum = -1;
synchronized (sLegacyRequests) {
LegacyRequest l = sLegacyRequests.get(netCap);
if (l == null) return;
ourSeqNum = l.expireSequenceNumber;
if (l.expireSequenceNumber == sequenceNum) removeRequestForFeature(netCap);
}
Log.d(TAG, "expireRequest with " + ourSeqNum + ", " + sequenceNum);
|
private NetworkRequest | findRequestForFeature(NetworkCapabilities netCap)
synchronized (sLegacyRequests) {
LegacyRequest l = sLegacyRequests.get(netCap);
if (l != null) return l.networkRequest;
}
return null;
|
public static android.net.ConnectivityManager | from(android.content.Context context){@hide}
return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
public LinkProperties | getActiveLinkProperties()Returns the IP information for the current default network.
try {
return mService.getActiveLinkProperties();
} catch (RemoteException e) {
return null;
}
|
public NetworkInfo | getActiveNetworkInfo()Returns details about the currently active default data network. When
connected, this network is the default route for outgoing connections.
You should always check {@link NetworkInfo#isConnected()} before initiating
network traffic. This may return {@code null} when there is no default
network.
try {
return mService.getActiveNetworkInfo();
} catch (RemoteException e) {
return null;
}
|
public NetworkInfo | getActiveNetworkInfoForUid(int uid)Returns details about the currently active default data network
for a given uid. This is for internal use only to avoid spying
other apps.
try {
return mService.getActiveNetworkInfoForUid(uid);
} catch (RemoteException e) {
return null;
}
|
public NetworkQuotaInfo | getActiveNetworkQuotaInfo()Return quota status for the current active network, or {@code null} if no
network is active. Quota status can change rapidly, so these values
shouldn't be cached.
This method requires the call to hold the permission
{@link android.Manifest.permission#ACCESS_NETWORK_STATE}.
try {
return mService.getActiveNetworkQuotaInfo();
} catch (RemoteException e) {
return null;
}
|
public NetworkInfo[] | getAllNetworkInfo()Returns connection status information about all network
types supported by the device.
try {
return mService.getAllNetworkInfo();
} catch (RemoteException e) {
return null;
}
|
public Network[] | getAllNetworks()Returns an array of all {@link Network} currently tracked by the
framework.
try {
return mService.getAllNetworks();
} catch (RemoteException e) {
return null;
}
|
public boolean | getBackgroundDataSetting()Returns the value of the setting for background data usage. If false,
applications should not use the network if the application is not in the
foreground. Developers should respect this setting, and check the value
of this before performing any background data operations.
All applications that have background services that use the network
should listen to {@link #ACTION_BACKGROUND_DATA_SETTING_CHANGED}.
// assume that background data is allowed; final authority is
// NetworkInfo which may be blocked.
return true;
|
public NetworkCapabilities[] | getDefaultNetworkCapabilitiesForUser(int userId)Returns an array of of {@link NetworkCapabilities} objects, representing
the Networks that applications run by the given user will use by default.
try {
return mService.getDefaultNetworkCapabilitiesForUser(userId);
} catch (RemoteException e) {
return null;
}
|
public ProxyInfo | getDefaultProxy()Get the current default HTTP proxy settings. If a global proxy is set it will be returned,
otherwise if this process is bound to a {@link Network} using
{@link #setProcessDefaultNetwork} then that {@code Network}'s proxy is returned, otherwise
the default network's proxy is returned.
final Network network = getProcessDefaultNetwork();
if (network != null) {
final ProxyInfo globalProxy = getGlobalProxy();
if (globalProxy != null) return globalProxy;
final LinkProperties lp = getLinkProperties(network);
if (lp != null) return lp.getHttpProxy();
return null;
}
try {
return mService.getDefaultProxy();
} catch (RemoteException e) {
return null;
}
|
public ProxyInfo | getGlobalProxy()Retrieve any network-independent global HTTP proxy.
try {
return mService.getGlobalProxy();
} catch (RemoteException e) {
return null;
}
|
public static android.net.ConnectivityManager | getInstance()
if (sInstance == null) {
throw new IllegalStateException("No ConnectivityManager yet constructed");
}
return sInstance;
|
public int | getLastTetherError(java.lang.String iface)Get a more detailed error code after a Tethering or Untethering
request asynchronously failed.
try {
return mService.getLastTetherError(iface);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
|
public LinkProperties | getLinkProperties(int networkType)Returns the IP information for a given network type.
try {
return mService.getLinkPropertiesForType(networkType);
} catch (RemoteException e) {
return null;
}
|
public LinkProperties | getLinkProperties(Network network)Get the {@link LinkProperties} for the given {@link Network}. This
will return {@code null} if the network is unknown.
try {
return mService.getLinkProperties(network);
} catch (RemoteException e) {
return null;
}
|
public boolean | getMobileDataEnabled()
IBinder b = ServiceManager.getService(Context.TELEPHONY_SERVICE);
if (b != null) {
try {
ITelephony it = ITelephony.Stub.asInterface(b);
int subId = SubscriptionManager.getDefaultDataSubId();
Log.d("ConnectivityManager", "getMobileDataEnabled()+ subId=" + subId);
boolean retVal = it.getDataEnabled(subId);
Log.d("ConnectivityManager", "getMobileDataEnabled()- subId=" + subId
+ " retVal=" + retVal);
return retVal;
} catch (RemoteException e) { }
}
Log.d("ConnectivityManager", "getMobileDataEnabled()- remote exception retVal=false");
return false;
|
public java.lang.String | getMobileProvisioningUrl()Get the mobile provisioning url.
{@hide}
try {
return mService.getMobileProvisioningUrl();
} catch (RemoteException e) {
}
return null;
|
public java.lang.String | getMobileRedirectedProvisioningUrl()Get the mobile redirected provisioning url.
{@hide}
try {
return mService.getMobileRedirectedProvisioningUrl();
} catch (RemoteException e) {
}
return null;
|
public NetworkCapabilities | getNetworkCapabilities(Network network)Get the {@link NetworkCapabilities} for the given {@link Network}. This
will return {@code null} if the network is unknown.
try {
return mService.getNetworkCapabilities(network);
} catch (RemoteException e) {
return null;
}
|
public Network | getNetworkForType(int networkType)Returns the {@link Network} object currently serving a given type, or
null if the given type is not connected.
This method requires the caller to hold the permission
{@link android.Manifest.permission#ACCESS_NETWORK_STATE}.
try {
return mService.getNetworkForType(networkType);
} catch (RemoteException e) {
return null;
}
|
public NetworkInfo | getNetworkInfo(Network network)Returns connection status information about a particular
Network.
try {
return mService.getNetworkInfoForNetwork(network);
} catch (RemoteException e) {
return null;
}
|
public NetworkInfo | getNetworkInfo(int networkType)Returns connection status information about a particular
network type.
try {
return mService.getNetworkInfo(networkType);
} catch (RemoteException e) {
return null;
}
|
private android.os.INetworkManagementService | getNetworkManagementService()
synchronized (this) {
if (mNMService != null) {
return mNMService;
}
IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
mNMService = INetworkManagementService.Stub.asInterface(b);
return mNMService;
}
|
public int | getNetworkPreference()Retrieves the current preferred network type.
return TYPE_NONE;
|
public static java.lang.String | getNetworkTypeName(int type)Returns a non-localized string representing a given network type.
ONLY used for debugging output.
switch (type) {
case TYPE_MOBILE:
return "MOBILE";
case TYPE_WIFI:
return "WIFI";
case TYPE_MOBILE_MMS:
return "MOBILE_MMS";
case TYPE_MOBILE_SUPL:
return "MOBILE_SUPL";
case TYPE_MOBILE_DUN:
return "MOBILE_DUN";
case TYPE_MOBILE_HIPRI:
return "MOBILE_HIPRI";
case TYPE_WIMAX:
return "WIMAX";
case TYPE_BLUETOOTH:
return "BLUETOOTH";
case TYPE_DUMMY:
return "DUMMY";
case TYPE_ETHERNET:
return "ETHERNET";
case TYPE_MOBILE_FOTA:
return "MOBILE_FOTA";
case TYPE_MOBILE_IMS:
return "MOBILE_IMS";
case TYPE_MOBILE_CBS:
return "MOBILE_CBS";
case TYPE_WIFI_P2P:
return "WIFI_P2P";
case TYPE_MOBILE_IA:
return "MOBILE_IA";
case TYPE_MOBILE_EMERGENCY:
return "MOBILE_EMERGENCY";
case TYPE_PROXY:
return "PROXY";
default:
return Integer.toString(type);
}
|
public static Network | getProcessDefaultNetwork()Returns the {@link Network} currently bound to this process via
{@link #setProcessDefaultNetwork}, or {@code null} if no {@link Network} is explicitly bound.
int netId = NetworkUtils.getNetworkBoundToProcess();
if (netId == NETID_UNSET) return null;
return new Network(netId);
|
public NetworkInfo | getProvisioningOrActiveNetworkInfo()Returns details about the Provisioning or currently active default data network. When
connected, this network is the default route for outgoing connections.
You should always check {@link NetworkInfo#isConnected()} before initiating
network traffic. This may return {@code null} when there is no default
network.
try {
return mService.getProvisioningOrActiveNetworkInfo();
} catch (RemoteException e) {
return null;
}
|
public java.lang.String[] | getTetherableBluetoothRegexs()Get the list of regular expressions that define any tetherable
Bluetooth network interfaces. If Bluetooth tethering is not supported by the
device, this list should be empty.
try {
return mService.getTetherableBluetoothRegexs();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetherableIfaces()Get the set of tetherable, available interfaces. This list is limited by
device configuration and current interface existence.
try {
return mService.getTetherableIfaces();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetherableUsbRegexs()Get the list of regular expressions that define any tetherable
USB network interfaces. If USB tethering is not supported by the
device, this list should be empty.
try {
return mService.getTetherableUsbRegexs();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetherableWifiRegexs()Get the list of regular expressions that define any tetherable
Wifi network interfaces. If Wifi tethering is not supported by the
device, this list should be empty.
try {
return mService.getTetherableWifiRegexs();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetheredDhcpRanges()Get the set of tethered dhcp ranges.
try {
return mService.getTetheredDhcpRanges();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetheredIfaces()Get the set of tethered interfaces.
try {
return mService.getTetheredIfaces();
} catch (RemoteException e) {
return new String[0];
}
|
public java.lang.String[] | getTetheringErroredIfaces()Get the set of interface names which attempted to tether but
failed. Re-attempting to tether may cause them to reset to the Tethered
state. Alternatively, causing the interface to be destroyed and recreated
may cause them to reset to the available state.
{@link ConnectivityManager#getLastTetherError} can be used to get more
information on the cause of the errors.
try {
return mService.getTetheringErroredIfaces();
} catch (RemoteException e) {
return new String[0];
}
|
private void | incCallbackHandlerRefCount()
synchronized(sCallbackRefCount) {
if (sCallbackRefCount.incrementAndGet() == 1) {
// TODO - switch this over to a ManagerThread or expire it when done
HandlerThread callbackThread = new HandlerThread("ConnectivityManager");
callbackThread.start();
sCallbackHandler = new CallbackHandler(callbackThread.getLooper(),
sNetworkCallback, sCallbackRefCount, this);
}
}
|
private int | inferLegacyTypeForNetworkCapabilities(NetworkCapabilities netCap)Guess what the network request was trying to say so that the resulting
network is accessible via the legacy (deprecated) API such as
requestRouteToHost.
This means we should try to be fairly preceise about transport and
capability but ignore things such as networkSpecifier.
If the request has more than one transport or capability it doesn't
match the old legacy requests (they selected only single transport/capability)
so this function cannot map the request to a single legacy type and
the resulting network will not be available to the legacy APIs.
TODO - This should be removed when the legacy APIs are removed.
if (netCap == null) {
return TYPE_NONE;
}
if (!netCap.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
return TYPE_NONE;
}
String type = null;
int result = TYPE_NONE;
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) {
type = "enableCBS";
result = TYPE_MOBILE_CBS;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) {
type = "enableIMS";
result = TYPE_MOBILE_IMS;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)) {
type = "enableFOTA";
result = TYPE_MOBILE_FOTA;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)) {
type = "enableDUN";
result = TYPE_MOBILE_DUN;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) {
type = "enableSUPL";
result = TYPE_MOBILE_SUPL;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)) {
type = "enableMMS";
result = TYPE_MOBILE_MMS;
} else if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
type = "enableHIPRI";
result = TYPE_MOBILE_HIPRI;
}
if (type != null) {
NetworkCapabilities testCap = networkCapabilitiesForFeature(TYPE_MOBILE, type);
if (testCap.equalsNetCapabilities(netCap) && testCap.equalsTransportTypes(netCap)) {
return result;
}
}
return TYPE_NONE;
|
public boolean | isActiveNetworkMetered()Returns if the currently active data network is metered. A network is
classified as metered when the user is sensitive to heavy data usage on
that connection due to monetary costs, data limitations or
battery/performance issues. You should check this before doing large
data transfers, and warn the user or delay the operation until another
network is available.
try {
return mService.isActiveNetworkMetered();
} catch (RemoteException e) {
return false;
}
|
public boolean | isDefaultNetworkActive()Return whether the data network is currently active. An active network means that
it is currently in a high power state for performing data transmission. On some
types of networks, it may be expensive to move and stay in such a state, so it is
more power efficient to batch network traffic together when the radio is already in
this state. This method tells you whether right now is currently a good time to
initiate network traffic, as the network is already active.
try {
return getNetworkManagementService().isNetworkActive();
} catch (RemoteException e) {
}
return false;
|
public boolean | isNetworkSupported(int networkType)Returns true if the hardware supports the given network type
else it returns false. This doesn't indicate we have coverage
or are authorized onto a network, just whether or not the
hardware supports it. For example a GSM phone without a SIM
should still return {@code true} for mobile data, but a wifi only
tablet would return {@code false}.
try {
return mService.isNetworkSupported(networkType);
} catch (RemoteException e) {}
return false;
|
public static boolean | isNetworkTypeMobile(int networkType)Checks if a given type uses the cellular data connection.
This should be replaced in the future by a network property.
switch (networkType) {
case TYPE_MOBILE:
case TYPE_MOBILE_MMS:
case TYPE_MOBILE_SUPL:
case TYPE_MOBILE_DUN:
case TYPE_MOBILE_HIPRI:
case TYPE_MOBILE_FOTA:
case TYPE_MOBILE_IMS:
case TYPE_MOBILE_CBS:
case TYPE_MOBILE_IA:
case TYPE_MOBILE_EMERGENCY:
return true;
default:
return false;
}
|
public static boolean | isNetworkTypeValid(int networkType)Tests if a given integer represents a valid network type.
return networkType >= 0 && networkType <= MAX_NETWORK_TYPE;
|
public static boolean | isNetworkTypeWifi(int networkType)Checks if the given network type is backed by a Wi-Fi radio.
switch (networkType) {
case TYPE_WIFI:
case TYPE_WIFI_P2P:
return true;
default:
return false;
}
|
public boolean | isTetheringSupported()Check if the device allows for tethering. It may be disabled via
{@code ro.tether.denied} system property, Settings.TETHER_SUPPORTED or
due to device configuration.
try {
return mService.isTetheringSupported();
} catch (RemoteException e) {
return false;
}
|
private int | legacyTypeForNetworkCapabilities(NetworkCapabilities netCap)
if (netCap == null) return TYPE_NONE;
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_CBS)) {
return TYPE_MOBILE_CBS;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_IMS)) {
return TYPE_MOBILE_IMS;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)) {
return TYPE_MOBILE_FOTA;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_DUN)) {
return TYPE_MOBILE_DUN;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) {
return TYPE_MOBILE_SUPL;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)) {
return TYPE_MOBILE_MMS;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
return TYPE_MOBILE_HIPRI;
}
if (netCap.hasCapability(NetworkCapabilities.NET_CAPABILITY_WIFI_P2P)) {
return TYPE_WIFI_P2P;
}
return TYPE_NONE;
|
public static void | maybeMarkCapabilitiesRestricted(NetworkCapabilities nc)Removes the NET_CAPABILITY_NOT_RESTRICTED capability from the given
NetworkCapabilities object if all the capabilities it provides are
typically provided by restricted networks.
TODO: consider:
- Moving to NetworkCapabilities
- Renaming it to guessRestrictedCapability and make it set the
restricted capability bit in addition to clearing it.
for (int capability : nc.getCapabilities()) {
switch (capability) {
case NetworkCapabilities.NET_CAPABILITY_CBS:
case NetworkCapabilities.NET_CAPABILITY_DUN:
case NetworkCapabilities.NET_CAPABILITY_EIMS:
case NetworkCapabilities.NET_CAPABILITY_FOTA:
case NetworkCapabilities.NET_CAPABILITY_IA:
case NetworkCapabilities.NET_CAPABILITY_IMS:
case NetworkCapabilities.NET_CAPABILITY_RCS:
case NetworkCapabilities.NET_CAPABILITY_XCAP:
case NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED: //there by default
continue;
default:
// At least one capability usually provided by unrestricted
// networks. Conclude that this network is unrestricted.
return;
}
}
// All the capabilities are typically provided by restricted networks.
// Conclude that this network is restricted.
nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
|
private NetworkCapabilities | networkCapabilitiesForFeature(int networkType, java.lang.String feature)
if (networkType == TYPE_MOBILE) {
int cap = -1;
if ("enableMMS".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_MMS;
} else if ("enableSUPL".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_SUPL;
} else if ("enableDUN".equals(feature) || "enableDUNAlways".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_DUN;
} else if ("enableHIPRI".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_INTERNET;
} else if ("enableFOTA".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_FOTA;
} else if ("enableIMS".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_IMS;
} else if ("enableCBS".equals(feature)) {
cap = NetworkCapabilities.NET_CAPABILITY_CBS;
} else {
return null;
}
NetworkCapabilities netCap = new NetworkCapabilities();
netCap.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).addCapability(cap);
maybeMarkCapabilitiesRestricted(netCap);
return netCap;
} else if (networkType == TYPE_WIFI) {
if ("p2p".equals(feature)) {
NetworkCapabilities netCap = new NetworkCapabilities();
netCap.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
netCap.addCapability(NetworkCapabilities.NET_CAPABILITY_WIFI_P2P);
maybeMarkCapabilitiesRestricted(netCap);
return netCap;
}
}
return null;
|
public void | registerNetworkAgent(android.os.Messenger messenger, NetworkInfo ni, LinkProperties lp, NetworkCapabilities nc, int score, NetworkMisc misc){@hide}
try {
mService.registerNetworkAgent(messenger, ni, lp, nc, score, misc);
} catch (RemoteException e) { }
|
public void | registerNetworkCallback(NetworkRequest request, android.net.ConnectivityManager$NetworkCallback networkCallback)Registers to receive notifications about all networks which satisfy the given
{@link NetworkRequest}. The callbacks will continue to be called until
either the application exits or {@link #unregisterNetworkCallback} is called
sendRequestForNetwork(request.networkCapabilities, networkCallback, 0, LISTEN, TYPE_NONE);
|
public void | registerNetworkFactory(android.os.Messenger messenger, java.lang.String name){@hide}
try {
mService.registerNetworkFactory(messenger, name);
} catch (RemoteException e) { }
|
public void | releaseNetworkRequest(android.app.PendingIntent operation)Removes a request made via {@link #requestNetwork(NetworkRequest, android.app.PendingIntent)}
This method has the same behavior as {@link #unregisterNetworkCallback} with respect to
releasing network resources and disconnecting.
checkPendingIntent(operation);
try {
mService.releasePendingNetworkRequest(operation);
} catch (RemoteException e) {}
|
public void | removeDefaultNetworkActiveListener(android.net.ConnectivityManager$OnNetworkActiveListener l)Remove network active listener previously registered with
{@link #addDefaultNetworkActiveListener}.
INetworkActivityListener rl = mNetworkActivityListeners.get(l);
if (rl == null) {
throw new IllegalArgumentException("Listener not registered: " + l);
}
try {
getNetworkManagementService().unregisterNetworkActivityListener(rl);
} catch (RemoteException e) {
}
|
private boolean | removeRequestForFeature(NetworkCapabilities netCap)
final LegacyRequest l;
synchronized (sLegacyRequests) {
l = sLegacyRequests.remove(netCap);
}
if (l == null) return false;
unregisterNetworkCallback(l.networkCallback);
l.clearDnsBinding();
return true;
|
private void | renewRequestLocked(android.net.ConnectivityManager$LegacyRequest l)
l.expireSequenceNumber++;
Log.d(TAG, "renewing request to seqNum " + l.expireSequenceNumber);
sendExpireMsgForFeature(l.networkCapabilities, l.expireSequenceNumber, l.delay);
|
public void | reportBadNetwork(Network network)Report a problem network to the framework. This provides a hint to the system
that there might be connectivity problems on this network and may cause
the framework to re-evaluate network connectivity and/or switch to another
network.
try {
mService.reportBadNetwork(network);
} catch (RemoteException e) {
}
|
public void | reportInetCondition(int networkType, int percentage)Report network connectivity status. This is currently used only
to alter status bar UI.
try {
mService.reportInetCondition(networkType, percentage);
} catch (RemoteException e) {
}
|
public void | requestNetwork(NetworkRequest request, android.net.ConnectivityManager$NetworkCallback networkCallback)Request a network to satisfy a set of {@link NetworkCapabilities}.
This {@link NetworkRequest} will live until released via
{@link #unregisterNetworkCallback} or the calling application exits.
Status of the request can be followed by listening to the various
callbacks described in {@link NetworkCallback}. The {@link Network}
can be used to direct traffic to the network.
sendRequestForNetwork(request.networkCapabilities, networkCallback, 0,
REQUEST, inferLegacyTypeForNetworkCapabilities(request.networkCapabilities));
|
public void | requestNetwork(NetworkRequest request, android.net.ConnectivityManager$NetworkCallback networkCallback, int timeoutMs)Request a network to satisfy a set of {@link NetworkCapabilities}, limited
by a timeout.
This function behaves identically to the non-timedout version, but if a suitable
network is not found within the given time (in milliseconds) the
{@link NetworkCallback#unavailable} callback is called. The request must
still be released normally by calling {@link releaseNetworkRequest}.
sendRequestForNetwork(request.networkCapabilities, networkCallback, timeoutMs,
REQUEST, inferLegacyTypeForNetworkCapabilities(request.networkCapabilities));
|
public void | requestNetwork(NetworkRequest request, android.app.PendingIntent operation)Request a network to satisfy a set of {@link NetworkCapabilities}.
This function behaves identically to the version that takes a NetworkCallback, but instead
of {@link NetworkCallback} a {@link PendingIntent} is used. This means
the request may outlive the calling application and get called back when a suitable
network is found.
The operation is an Intent broadcast that goes to a broadcast receiver that
you registered with {@link Context#registerReceiver} or through the
<receiver> tag in an AndroidManifest.xml file
The operation Intent is delivered with two extras, a {@link Network} typed
extra called {@link #EXTRA_NETWORK} and a {@link NetworkRequest}
typed extra called {@link #EXTRA_NETWORK_REQUEST} containing
the original requests parameters. It is important to create a new,
{@link NetworkCallback} based request before completing the processing of the
Intent to reserve the network or it will be released shortly after the Intent
is processed.
If there is already an request for this Intent registered (with the equality of
two Intents defined by {@link Intent#filterEquals}), then it will be removed and
replaced by this one, effectively releasing the previous {@link NetworkRequest}.
The request may be released normally by calling
{@link #releaseNetworkRequest(android.app.PendingIntent)}.
checkPendingIntent(operation);
try {
mService.pendingRequestForNetwork(request.networkCapabilities, operation);
} catch (RemoteException e) {}
|
private NetworkRequest | requestNetworkForFeatureLocked(NetworkCapabilities netCap)
int delay = -1;
int type = legacyTypeForNetworkCapabilities(netCap);
try {
delay = mService.getRestoreDefaultNetworkDelay(type);
} catch (RemoteException e) {}
LegacyRequest l = new LegacyRequest();
l.networkCapabilities = netCap;
l.delay = delay;
l.expireSequenceNumber = 0;
l.networkRequest = sendRequestForNetwork(netCap, l.networkCallback, 0,
REQUEST, type);
if (l.networkRequest == null) return null;
sLegacyRequests.put(netCap, l);
sendExpireMsgForFeature(netCap, l.expireSequenceNumber, delay);
return l.networkRequest;
|
public boolean | requestRouteToHost(int networkType, int hostAddress)Ensure that a network route exists to deliver traffic to the specified
host via the specified network interface. An attempt to add a route that
already exists is ignored, but treated as successful.
This method requires the caller to hold the permission
{@link android.Manifest.permission#CHANGE_NETWORK_STATE}.
return requestRouteToHostAddress(networkType, NetworkUtils.intToInetAddress(hostAddress));
|
public boolean | requestRouteToHostAddress(int networkType, java.net.InetAddress hostAddress)Ensure that a network route exists to deliver traffic to the specified
host via the specified network interface. An attempt to add a route that
already exists is ignored, but treated as successful.
This method requires the caller to hold the permission
{@link android.Manifest.permission#CHANGE_NETWORK_STATE}.
try {
return mService.requestRouteToHostAddress(networkType, hostAddress.getAddress());
} catch (RemoteException e) {
return false;
}
|
private void | sendExpireMsgForFeature(NetworkCapabilities netCap, int seqNum, int delay)
if (delay >= 0) {
Log.d(TAG, "sending expire msg with seqNum " + seqNum + " and delay " + delay);
Message msg = sCallbackHandler.obtainMessage(EXPIRE_LEGACY_REQUEST, seqNum, 0, netCap);
sCallbackHandler.sendMessageDelayed(msg, delay);
}
|
private NetworkRequest | sendRequestForNetwork(NetworkCapabilities need, android.net.ConnectivityManager$NetworkCallback networkCallback, int timeoutSec, int action, int legacyType)
if (networkCallback == null) {
throw new IllegalArgumentException("null NetworkCallback");
}
if (need == null) throw new IllegalArgumentException("null NetworkCapabilities");
try {
incCallbackHandlerRefCount();
synchronized(sNetworkCallback) {
if (action == LISTEN) {
networkCallback.networkRequest = mService.listenForNetwork(need,
new Messenger(sCallbackHandler), new Binder());
} else {
networkCallback.networkRequest = mService.requestNetwork(need,
new Messenger(sCallbackHandler), timeoutSec, new Binder(), legacyType);
}
if (networkCallback.networkRequest != null) {
sNetworkCallback.put(networkCallback.networkRequest, networkCallback);
}
}
} catch (RemoteException e) {}
if (networkCallback.networkRequest == null) decCallbackHandlerRefCount();
return networkCallback.networkRequest;
|
public void | setAirplaneMode(boolean enable)Set the value for enabling/disabling airplane mode
try {
mService.setAirplaneMode(enable);
} catch (RemoteException e) {
}
|
public void | setBackgroundDataSetting(boolean allowBackgroundData)Sets the value of the setting for background data usage.
// ignored
|
public void | setDataDependency(int networkType, boolean met)Sets a secondary requirement bit for the given networkType.
This requirement bit is generally under the control of the carrier
or its agents and is not directly controlled by the user.
try {
mService.setDataDependency(networkType, met);
} catch (RemoteException e) {
}
|
public void | setGlobalProxy(ProxyInfo p)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
doing something unusual like general internal filtering this may be useful. On
a private network where the proxy is not accessible, you may break HTTP using this.
try {
mService.setGlobalProxy(p);
} catch (RemoteException e) {
}
|
public void | setNetworkPreference(int preference)Specifies the preferred network type. When the device has more
than one type available the preferred network type will be used.
|
public static boolean | setProcessDefaultNetwork(Network network)Binds the current process to {@code network}. All Sockets created in the future
(and not explicitly bound via a bound SocketFactory from
{@link Network#getSocketFactory() Network.getSocketFactory()}) will be bound to
{@code network}. All host name resolutions will be limited to {@code network} as well.
Note that if {@code network} ever disconnects, all Sockets created in this way will cease to
work and all host name resolutions will fail. This is by design so an application doesn't
accidentally use Sockets it thinks are still bound to a particular {@link Network}.
To clear binding pass {@code null} for {@code network}. Using individually bound
Sockets created by Network.getSocketFactory().createSocket() and
performing network-specific host name resolutions via
{@link Network#getAllByName Network.getAllByName} is preferred to calling
{@code setProcessDefaultNetwork}.
int netId = (network == null) ? NETID_UNSET : network.netId;
if (netId == NetworkUtils.getNetworkBoundToProcess()) {
return true;
}
if (NetworkUtils.bindProcessToNetwork(netId)) {
// Set HTTP proxy system properties to match network.
// TODO: Deprecate this static method and replace it with a non-static version.
Proxy.setHttpProxySystemProperty(getInstance().getDefaultProxy());
// Must flush DNS cache as new network may have different DNS resolutions.
InetAddress.clearDnsCache();
// Must flush socket pool as idle sockets will be bound to previous network and may
// cause subsequent fetches to be performed on old network.
NetworkEventDispatcher.getInstance().onNetworkConfigurationChanged();
return true;
} else {
return false;
}
|
public static boolean | setProcessDefaultNetworkForHostResolution(Network network)Binds host resolutions performed by this process to {@code network}.
{@link #setProcessDefaultNetwork} takes precedence over this setting.
return NetworkUtils.bindProcessToNetworkForHostResolution(
network == null ? NETID_UNSET : network.netId);
|
public void | setProvisioningNotificationVisible(boolean visible, int networkType, java.lang.String action)Set sign in error notification to visible or in visible
try {
mService.setProvisioningNotificationVisible(visible, networkType, action);
} catch (RemoteException e) {
}
|
public int | setUsbTethering(boolean enable)Attempt to both alter the mode of USB and Tethering of USB. A
utility method to deal with some of the complexity of USB - will
attempt to switch to Rndis and subsequently tether the resulting
interface on {@code true} or turn off tethering and switch off
Rndis on {@code false}.
try {
return mService.setUsbTethering(enable);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
|
public int | startUsingNetworkFeature(int networkType, java.lang.String feature)Tells the underlying networking system that the caller wants to
begin using the named feature. The interpretation of {@code feature}
is completely up to each networking implementation.
This method requires the caller to hold the permission
{@link android.Manifest.permission#CHANGE_NETWORK_STATE}.
NetworkCapabilities netCap = networkCapabilitiesForFeature(networkType, feature);
if (netCap == null) {
Log.d(TAG, "Can't satisfy startUsingNetworkFeature for " + networkType + ", " +
feature);
return PhoneConstants.APN_REQUEST_FAILED;
}
NetworkRequest request = null;
synchronized (sLegacyRequests) {
LegacyRequest l = sLegacyRequests.get(netCap);
if (l != null) {
Log.d(TAG, "renewing startUsingNetworkFeature request " + l.networkRequest);
renewRequestLocked(l);
if (l.currentNetwork != null) {
return PhoneConstants.APN_ALREADY_ACTIVE;
} else {
return PhoneConstants.APN_REQUEST_STARTED;
}
}
request = requestNetworkForFeatureLocked(netCap);
}
if (request != null) {
Log.d(TAG, "starting startUsingNetworkFeature for request " + request);
return PhoneConstants.APN_REQUEST_STARTED;
} else {
Log.d(TAG, " request Failed");
return PhoneConstants.APN_REQUEST_FAILED;
}
|
public int | stopUsingNetworkFeature(int networkType, java.lang.String feature)Tells the underlying networking system that the caller is finished
using the named feature. The interpretation of {@code feature}
is completely up to each networking implementation.
This method requires the caller to hold the permission
{@link android.Manifest.permission#CHANGE_NETWORK_STATE}.
NetworkCapabilities netCap = networkCapabilitiesForFeature(networkType, feature);
if (netCap == null) {
Log.d(TAG, "Can't satisfy stopUsingNetworkFeature for " + networkType + ", " +
feature);
return -1;
}
if (removeRequestForFeature(netCap)) {
Log.d(TAG, "stopUsingNetworkFeature for " + networkType + ", " + feature);
}
return 1;
|
public void | supplyMessenger(int networkType, android.os.Messenger messenger)Supply the backend messenger for a network tracker
try {
mService.supplyMessenger(networkType, messenger);
} catch (RemoteException e) {
}
|
public int | tether(java.lang.String iface)Attempt to tether the named interface. This will setup a dhcp server
on the interface, forward and NAT IP packets and forward DNS requests
to the best active upstream network interface. Note that if no upstream
IP network interface is available, dhcp will still run and traffic will be
allowed between the tethered devices and this device, though upstream net
access will of course fail until an upstream network interface becomes
active.
try {
return mService.tether(iface);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
|
public void | unregisterNetworkCallback(android.net.ConnectivityManager$NetworkCallback networkCallback)Unregisters callbacks about and possibly releases networks originating from
{@link #requestNetwork} and {@link #registerNetworkCallback} calls. If the
given {@code NetworkCallback} had previously been used with {@code #requestNetwork},
any networks that had been connected to only to satisfy that request will be
disconnected.
if (networkCallback == null || networkCallback.networkRequest == null ||
networkCallback.networkRequest.requestId == REQUEST_ID_UNSET) {
throw new IllegalArgumentException("Invalid NetworkCallback");
}
try {
mService.releaseNetworkRequest(networkCallback.networkRequest);
} catch (RemoteException e) {}
|
public void | unregisterNetworkFactory(android.os.Messenger messenger){@hide}
try {
mService.unregisterNetworkFactory(messenger);
} catch (RemoteException e) { }
|
public int | untether(java.lang.String iface)Stop tethering the named interface.
try {
return mService.untether(iface);
} catch (RemoteException e) {
return TETHER_ERROR_SERVICE_UNAVAIL;
}
|
public boolean | updateLockdownVpn()If the LockdownVpn mechanism is enabled, updates the vpn
with a reload of its profile.
try {
return mService.updateLockdownVpn();
} catch (RemoteException e) {
return false;
}
|