19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.net; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkeyimport static com.android.internal.util.Preconditions.checkNotNull; 20f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.annotation.SdkConstant; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.annotation.SdkConstant.SdkConstantType; 238fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkeyimport android.content.Context; 2442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwaltimport android.os.Binder; 253a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkeyimport android.os.Build.VERSION_CODES; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 27961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkeyimport android.provider.Settings; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwaltimport java.net.InetAddress; 30585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Class that answers queries about the state of network connectivity. It also 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * notifies applications when network connectivity changes. Get an instance 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this class by calling 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Context#getSystemService(String) Context.getSystemService(Context.CONNECTIVITY_SERVICE)}. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The primary responsibilities of this class are to: 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <ol> 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)</li> 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Send broadcast intents when network connectivity changes</li> 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Attempt to "fail over" to another network when connectivity to a network 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is lost</li> 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Provide an API that allows applications to query the coarse-grained or fine-grained 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state of the available networks</li> 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </ol> 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 47c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkeypublic class ConnectivityManager { 48c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey private static final String TAG = "ConnectivityManager"; 49c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A change in network connectivity has occurred. A connection has either 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been established or lost. The NetworkInfo for the affected network is 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent as an extra; it should be consulted to see what kind of 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity event occurred. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this is a connection that was the result of failing over from a 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * disconnected network, then the FAILOVER_CONNECTION boolean extra is 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * set to true. 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a loss of connectivity, if the connectivity manager is attempting 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to connect (or has already connected) to another network, the 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NetworkInfo for the new network is also passed as an extra. This lets 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any receivers of the broadcast know that they should not necessarily 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tell the user that no data traffic will be possible. Instead, the 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * reciever should expect another broadcast soon, indicating either that 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the failover attempt succeeded (and so there is still overall data 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity), or that the failover attempt failed, meaning that all 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity has been lost. 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is set to {@code true} if there are no connected networks at all. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; 74f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 76961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey * Identical to {@link #CONNECTIVITY_ACTION} broadcast, but sent without any 77961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey * applicable {@link Settings.Secure#CONNECTIVITY_CHANGE_DELAY}. 78961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey * 79961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey * @hide 80961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey */ 81961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey public static final String CONNECTIVITY_ACTION_IMMEDIATE = 82961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey "android.net.conn.CONNECTIVITY_CHANGE_IMMEDIATE"; 83961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey 84961e30458319cfd50e1892ba7dd14a1d0ebe4cc7Jeff Sharkey /** 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. Retrieve with 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 87f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * 88f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * @deprecated Since {@link NetworkInfo} can vary based on UID, applications 89f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * should always obtain network information through 90f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * {@link #getActiveNetworkInfo()} or 91f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * {@link #getAllNetworkInfo()}. 9275fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * @see #EXTRA_NETWORK_TYPE 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 94f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey @Deprecated 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NETWORK_INFO = "networkInfo"; 96f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9875fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * Network type which triggered a {@link #CONNECTIVITY_ACTION} broadcast. 9975fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * Can be used with {@link #getNetworkInfo(int)} to get {@link NetworkInfo} 10075fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * state based on the calling application. 10175fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * 10275fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey * @see android.content.Intent#getIntExtra(String, int) 10375fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey */ 10475fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey public static final String EXTRA_NETWORK_TYPE = "networkType"; 10575fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey 10675fbb4bdfde9188081f000506845d852f31362f0Jeff Sharkey /** 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether a connect event 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is for a network to which the connectivity manager was failing over 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * following a disconnect on another network. 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_IS_FAILOVER = "isFailover"; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. This is supplied when 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there is another network that it may be possible to connect to. Retrieve with 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork"; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether there is a 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * complete lack of connectivity, i.e., no network is available. 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity"; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that indicates why an attempt to connect 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to a network failed. The string has no particular structure. It is 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * intended to be used in notifications presented to users. Retrieve 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_REASON = "reason"; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that provides optionally supplied 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extra information about the network state. The information 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * may be passed up from the lower networking layers, and its 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meaning may be specific to a particular network type. Retrieve 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_EXTRA_INFO = "extraInfo"; 140d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt /** 141d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * The lookup key for an int that provides information about 142d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * our connection to the internet at large. 0 indicates no connection, 143d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * 100 indicates a great connection. Retrieve it with 144c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey * {@link android.content.Intent#getIntExtra(String, int)}. 145d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 146d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 147d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public static final String EXTRA_INET_CONDITION = "inetCondition"; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 150db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * Broadcast action to indicate the change of data activity status 151db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * (idle or active) on a network in a recent period. 152db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * The network becomes active when data transimission is started, or 153db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * idle if there is no data transimition for a period of time. 154db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * {@hide} 155db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai */ 156db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) 157db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai public static final String ACTION_DATA_ACTIVITY_CHANGE = "android.net.conn.DATA_ACTIVITY_CHANGE"; 158db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai /** 159db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * The lookup key for an enum that indicates the network device type on which this data activity 160db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * change happens. 161db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * {@hide} 162db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai */ 163db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai public static final String EXTRA_DEVICE_TYPE = "deviceType"; 164db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai /** 165db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * The lookup key for a boolean that indicates the device is active or not. {@code true} means 166db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * it is actively sending or receiving data and {@code false} means it is idle. 167db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai * {@hide} 168db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai */ 169db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai public static final String EXTRA_IS_ACTIVE = "isActive"; 170db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai 171db3c8678e5cbdfec011afaf25bde2091152c30adHaoyu Bai /** 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast Action: The setting for background data usage has changed 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Use {@link #getBackgroundDataSetting()} to get the current value. 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If an application uses the network in the background, it should listen 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for this broadcast and stop using the background data if the value is 177c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey * {@code false}. 17854ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * <p> 17954ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * 18054ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH}, availability 18154ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * of background data depends on several combined factors, and 18254ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * this broadcast is no longer sent. Instead, when background 18354ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * data is unavailable, {@link #getActiveNetworkInfo()} will now 18454ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * appear disconnected. During first boot after a platform 18554ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * upgrade, this broadcast will be sent once if 18654ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * {@link #getBackgroundDataSetting()} was {@code false} before 18754ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey * the upgrade. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) 19054ee2adf1711ce34c309c65c17ed6fd4d8f0d632Jeff Sharkey @Deprecated 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"; 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1941e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt /** 1951e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * Broadcast Action: The network connection may not be good 1961e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * uses {@code ConnectivityManager.EXTRA_INET_CONDITION} and 1971e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * {@code ConnectivityManager.EXTRA_NETWORK_INFO} to specify 1981e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * the network and it's condition. 1991e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * @hide 2001e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt */ 2011e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt public static final String INET_CONDITION_ACTION = 2021e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt "android.net.conn.INET_CONDITION_ACTION"; 2031e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt 20442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 205d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * Broadcast Action: A tetherable connection has come or gone 206d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * TODO - finish the doc 207d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 208d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 209d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public static final String ACTION_TETHER_STATE_CHANGED = 210d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt "android.net.conn.TETHER_STATE_CHANGED"; 211d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 212d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 213d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 2142a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 215d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 2162a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_AVAILABLE_TETHER = "availableArray"; 217d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 218d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 219d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 2202a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 221d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 2222a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_ACTIVE_TETHER = "activeArray"; 2232a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 2242a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 2252a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * @hide 2262a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 2272a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 2282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_ERRORED_TETHER = "erroredArray"; 229d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 230d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 231ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt * The absence of APN.. 232ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt * @hide 233ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt */ 234ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt public static final int TYPE_NONE = -1; 235ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt 236ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt /** 23742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default Mobile data connection. When active, all data traffic 23897ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 23942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 24042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE = 0; 24142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 24242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default WIFI data connection. When active, all data traffic 24397ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 24442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 24542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_WIFI = 1; 24642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 24742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * An MMS-specific Mobile data connection. This connection may be the 2481bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 24942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Multimedia Messaging 25042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Service servers. It may coexist with default data connections. 25142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 25242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_MMS = 2; 25342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 25442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A SUPL-specific Mobile data connection. This connection may be the 2551bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 25642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Secure User Plane 25742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Location servers for help locating the device. It may coexist with 25842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * default data connections. 25942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 26042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_SUPL = 3; 26142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 26242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A DUN-specific Mobile data connection. This connection may be the 2631bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 26442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applicaitons performing a Dial Up Networking bridge so that 26542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * the carrier is aware of DUN traffic. It may coexist with default data 26642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * connections. 26742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 26842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_DUN = 4; 26942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 27042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A High Priority Mobile data connection. This connection is typically 2711bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * the same as {@link #TYPE_MOBILE} but the routing setup is different. 27242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Only requesting processes will have access to the Mobile DNS servers 27342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * and only IP's explicitly requested via {@link #requestRouteToHost} 274c849cdf5cfde007ce591838c4e2b777fb4843c8dRobert Greenwalt * will route over this interface if a default route exists. 27542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 27642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_HIPRI = 5; 2778214deb542392f48b6c3fdc377fdf976c0b17a32jsh /** 2788214deb542392f48b6c3fdc377fdf976c0b17a32jsh * The Default WiMAX data connection. When active, all data traffic 27997ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 2808214deb542392f48b6c3fdc377fdf976c0b17a32jsh */ 2818214deb542392f48b6c3fdc377fdf976c0b17a32jsh public static final int TYPE_WIMAX = 6; 282da3d5e6587c1476d489495ac93e84ebf223024c9Robert Greenwalt 28315c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh /** 28497ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * The Default Bluetooth data connection. When active, all data traffic 28597ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 28615c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh */ 28715c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_BLUETOOTH = 7; 28815c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh 2896081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt /** 2906081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt * Dummy data connection. This should not be used on shipping devices. 2916081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt */ 29215c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_DUMMY = 8; 2939d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2946081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt /** 29597ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * The Default Ethernet data connection. When active, all data traffic 29697ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 2976081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt */ 298e12aec941dfc93b76b5efb9bc9f30d2ba3469434Robert Greenwalt public static final int TYPE_ETHERNET = 9; 2996081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt 3009d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 3019d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * Over the air Adminstration. 3029d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 3039d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 3049d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_FOTA = 10; 3059d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 3069d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 3079d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * IP Multimedia Subsystem 3089d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 3099d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 3109d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_IMS = 11; 3119d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 3129d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 3139d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * Carrier Branded Services 3149d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 3159d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 3169d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_CBS = 12; 3179d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 318aea743aaa43a833fd8ff3dc56205197583152d5frepo sync /** 319aea743aaa43a833fd8ff3dc56205197583152d5frepo sync * A Wi-Fi p2p connection. Only requesting processes will have access to 320aea743aaa43a833fd8ff3dc56205197583152d5frepo sync * the peers connected. 321aea743aaa43a833fd8ff3dc56205197583152d5frepo sync * {@hide} 322aea743aaa43a833fd8ff3dc56205197583152d5frepo sync */ 323aea743aaa43a833fd8ff3dc56205197583152d5frepo sync public static final int TYPE_WIFI_P2P = 13; 324aea743aaa43a833fd8ff3dc56205197583152d5frepo sync 3259d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** {@hide} */ 326aea743aaa43a833fd8ff3dc56205197583152d5frepo sync public static final int MAX_RADIO_TYPE = TYPE_WIFI_P2P; 3279d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 3289d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** {@hide} */ 329aea743aaa43a833fd8ff3dc56205197583152d5frepo sync public static final int MAX_NETWORK_TYPE = TYPE_WIFI_P2P; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI; 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 333625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey /** 334625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey * Default value for {@link Settings.Global#CONNECTIVITY_CHANGE_DELAY} in 335625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey * milliseconds. 336625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey * 337625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey * @hide 338625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey */ 339625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey public static final int CONNECTIVITY_CHANGE_DELAY_DEFAULT = 3000; 340625239a05401bbf18b04d9874cea3f82da7c29a1Jeff Sharkey 341c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey private final IConnectivityManager mService; 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 343d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static boolean isNetworkTypeValid(int networkType) { 34442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return networkType >= 0 && networkType <= MAX_NETWORK_TYPE; 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 347d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey /** {@hide} */ 348d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static String getNetworkTypeName(int type) { 349d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey switch (type) { 350d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE: 351d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE"; 352d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_WIFI: 353d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "WIFI"; 354d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_MMS: 355d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_MMS"; 356d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_SUPL: 357d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_SUPL"; 358d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_DUN: 359d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_DUN"; 360d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_HIPRI: 361d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_HIPRI"; 362d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_WIMAX: 363d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "WIMAX"; 364d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_BLUETOOTH: 365d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "BLUETOOTH"; 366d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_DUMMY: 367d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "DUMMY"; 368d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_ETHERNET: 369d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "ETHERNET"; 370d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_FOTA: 371d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_FOTA"; 372d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_IMS: 373d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_IMS"; 374d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_CBS: 375d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_CBS"; 376aea743aaa43a833fd8ff3dc56205197583152d5frepo sync case TYPE_WIFI_P2P: 377aea743aaa43a833fd8ff3dc56205197583152d5frepo sync return "WIFI_P2P"; 378d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey default: 379d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return Integer.toString(type); 380d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 381d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 382d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey 383d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey /** {@hide} */ 384d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static boolean isNetworkTypeMobile(int networkType) { 385d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey switch (networkType) { 386d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE: 387d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_MMS: 388d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_SUPL: 389d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_DUN: 390d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_HIPRI: 391d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_FOTA: 392d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_IMS: 393d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_CBS: 394d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return true; 395d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey default: 396d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return false; 397d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 398d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 399d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setNetworkPreference(int preference) { 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.setNetworkPreference(preference); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getNetworkPreference() { 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkPreference(); 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 415671644c3ef92a9153ea5bd495e132d5fe6674234Scott Main /** 4169f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * Returns details about the currently active data network. When connected, 4179f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * this network is the default route for outgoing connections. You should 4189f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * always check {@link NetworkInfo#isConnected()} before initiating network 4199f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * traffic. This may return {@code null} when no networks are available. 4209530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 4219530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#ACCESS_NETWORK_STATE}. 4229f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey */ 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getActiveNetworkInfo() { 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getActiveNetworkInfo(); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 431c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 432c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey public NetworkInfo getActiveNetworkInfoForUid(int uid) { 433c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey try { 434c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey return mService.getActiveNetworkInfoForUid(uid); 435c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } catch (RemoteException e) { 436c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey return null; 437c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } 438c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } 439c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getNetworkInfo(int networkType) { 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkInfo(networkType); 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo[] getAllNetworkInfo() { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getAllNetworkInfo(); 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 456c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 457d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getActiveLinkProperties() { 458d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 459d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getActiveLinkProperties(); 460d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 461d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 462d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 463d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 464d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 465c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 466d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getLinkProperties(int networkType) { 467d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 468d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getLinkProperties(networkType); 469d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 470d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 471d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 472d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 473d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadios(boolean turnOn) { 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadios(turnOn); 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadio(int networkType, boolean turnOn) { 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadio(networkType, turnOn); 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller wants to 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * begin using the named feature. The interpretation of {@code feature} 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 4969530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 4979530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#CHANGE_NETWORK_STATE}. 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature to be used 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int startUsingNetworkFeature(int networkType, String feature) { 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 50742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return mService.startUsingNetworkFeature(networkType, feature, 50842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt new Binder()); 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller is finished 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * using the named feature. The interpretation of {@code feature} 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 5189530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 5199530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#CHANGE_NETWORK_STATE}. 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature that is no longer needed 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int stopUsingNetworkFeature(int networkType, String feature) { 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.stopUsingNetworkFeature(networkType, feature); 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Ensure that a network route exists to deliver traffic to the specified 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host via the specified network interface. An attempt to add a route that 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * already exists is ignored, but treated as successful. 5399530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * <p>This method requires the caller to hold the permission 5409530e3a22d5ffa2019d1a5177b6a441d4d6d048bNicolas Falliere * {@link android.Manifest.permission#CHANGE_NETWORK_STATE}. 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType the type of the network over which traffic to the specified 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host is to be routed 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param hostAddress the IP address of the host to which the route is desired 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@code true} on success, {@code false} on failure 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean requestRouteToHost(int networkType, int hostAddress) { 547585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt InetAddress inetAddress = NetworkUtils.intToInetAddress(hostAddress); 548585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 549585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt if (inetAddress == null) { 550585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return false; 551585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 552585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 553585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return requestRouteToHostAddress(networkType, inetAddress); 554585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 555585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 556585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt /** 557585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * Ensure that a network route exists to deliver traffic to the specified 558585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host via the specified network interface. An attempt to add a route that 559585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * already exists is ignored, but treated as successful. 560585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param networkType the type of the network over which traffic to the specified 561585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host is to be routed 562585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param hostAddress the IP address of the host to which the route is desired 563585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @return {@code true} on success, {@code false} on failure 564585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @hide 565585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt */ 566585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) { 567585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt byte[] address = hostAddress.getAddress(); 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 569585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return mService.requestRouteToHostAddress(networkType, address); 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value of the setting for background data usage. If false, 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * applications should not use the network if the application is not in the 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground. Developers should respect this setting, and check the value 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this before performing any background data operations. 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All applications that have background services that use the network 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * should listen to {@link #ACTION_BACKGROUND_DATA_SETTING_CHANGED}. 5833a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey * <p> 5844cc5333539f57b54663b0a6e398a11a0aaefc8bbScott Main * @deprecated As of {@link VERSION_CODES#ICE_CREAM_SANDWICH}, availability of 5853a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey * background data depends on several combined factors, and this method will 5863a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey * always return {@code true}. Instead, when background data is unavailable, 5873a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey * {@link #getActiveNetworkInfo()} will now appear disconnected. 5886fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Whether background data usage is allowed. 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5913a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey @Deprecated 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getBackgroundDataSetting() { 5933a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey // assume that background data is allowed; final authority is 5943a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey // NetworkInfo which may be blocked. 5953a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey return true; 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the value of the setting for background data usage. 600c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param allowBackgroundData Whether an application should use data while 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it is in the background. 603c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.Manifest.permission#CHANGE_BACKGROUND_DATA_SETTING 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getBackgroundDataSetting() 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6083a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey @Deprecated 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBackgroundDataSetting(boolean allowBackgroundData) { 6103a844fcf5a0e70a19c38dc500306b9ebe4e1413bJeff Sharkey // ignored 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 612c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 613c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 614f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * Return quota status for the current active network, or {@code null} if no 615f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * network is active. Quota status can change rapidly, so these values 616f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey * shouldn't be cached. 61744a3e0d497f19fad1de4b73eb0eb6d3b6132c405Jeff Sharkey * 61844a3e0d497f19fad1de4b73eb0eb6d3b6132c405Jeff Sharkey * @hide 619f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey */ 620f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey public NetworkQuotaInfo getActiveNetworkQuotaInfo() { 621f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey try { 622f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey return mService.getActiveNetworkQuotaInfo(); 623f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey } catch (RemoteException e) { 624f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey return null; 625f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey } 626f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey } 627f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey 628f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey /** 629c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Gets the value of the setting for enabling Mobile data. 630c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 631c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @return Whether mobile data is enabled. 632c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 633c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 634c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public boolean getMobileDataEnabled() { 635c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 636c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return mService.getMobileDataEnabled(); 637c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 638c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return true; 639c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 640c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 641c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 642c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 643c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Sets the persisted value for enabling/disabling Mobile data. 644c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 6455a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param enabled Whether the mobile data connection should be 646c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * used or not. 647c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 648c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 649c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public void setMobileDataEnabled(boolean enabled) { 650c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 651c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt mService.setMobileDataEnabled(enabled); 652c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 653c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 654c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 655c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConnectivityManager(IConnectivityManager service) { 660f0ceede8fff5df24e5c98701d81c2b71eb138aa9Jeff Sharkey mService = checkNotNull(service, "missing IConnectivityManager"); 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 662d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 6638fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkey /** {@hide} */ 6648fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkey public static ConnectivityManager from(Context context) { 6658fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkey return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 6668fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkey } 6678fc27e8b87bd1def854a03d84009143b315d4176Jeff Sharkey 668d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 669d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 670d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 671d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetherableIfaces() { 672d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 673d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetherableIfaces(); 674d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 675d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 676d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 677d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 678d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 679d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 680d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 681d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 682d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetheredIfaces() { 683d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 684d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetheredIfaces(); 685d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 686d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 687d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 688d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 689d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 690d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 691d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 692d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 6935a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public String[] getTetheringErroredIfaces() { 6945a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 6955a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getTetheringErroredIfaces(); 6965a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 6975a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return new String[0]; 6985a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 6995a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 7005a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 7015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 7025a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 7035a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 7045a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 7055a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int tether(String iface) { 706d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 707d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.tether(iface); 708d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 7095a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 710d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 711d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 712d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 713d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 7145a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 715d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 716d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 7175a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int untether(String iface) { 718d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 719d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.untether(iface); 720d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 7215a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 722d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 723d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 7242a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 7252a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 7262a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 7272a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 7282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public boolean isTetheringSupported() { 7292a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 7302a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.isTetheringSupported(); 7312a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 7322a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return false; 7332a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7342a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7352a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 7362a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 7372a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 7382a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 7392a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableUsbRegexs() { 7402a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 7412a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableUsbRegexs(); 7422a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 7432a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 7442a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7452a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7462a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 7472a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 7482a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 7492a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 7502a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableWifiRegexs() { 7512a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 7522a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableWifiRegexs(); 7532a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 7542a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 7552a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7562a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 7575a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 7586fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang /** 7596fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * {@hide} 7606fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang */ 7616fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang public String[] getTetherableBluetoothRegexs() { 7626fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang try { 7636fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return mService.getTetherableBluetoothRegexs(); 7646fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } catch (RemoteException e) { 7656fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return new String[0]; 7666fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 7676fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 7686fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang 7696c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood /** 7706c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood * {@hide} 7716c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood */ 7726c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood public int setUsbTethering(boolean enable) { 7736c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood try { 7746c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood return mService.setUsbTethering(enable); 7756c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } catch (RemoteException e) { 7766c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood return TETHER_ERROR_SERVICE_UNAVAIL; 7776c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } 7786c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } 7796c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood 7805a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7815a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_NO_ERROR = 0; 7825a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7835a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; 7845a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7855a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; 7865a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7875a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNSUPPORTED = 3; 7885a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7895a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; 7905a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7915a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_MASTER_ERROR = 5; 7925a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7935a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; 7945a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7955a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; 7965a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7975a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8; 7985a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 7995a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9; 8005a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 8015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; 8025a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 8035a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 8045a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param iface The name of the interface we're interested in 8055a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error The error code of the last error tethering or untethering the named 8065a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * interface 8075a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 8085a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 8095a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int getLastTetherError(String iface) { 8105a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 8115a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getLastTetherError(iface); 8125a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 8135a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 8145a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 81514f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 81614f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt 81714f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt /** 81814f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * Ensure the device stays awake until we connect with the next network 81914f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @param forWhome The name of the network going down for logging purposes 82014f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @return {@code true} on success, {@code false} on failure 82114f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * {@hide} 82214f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt */ 82314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt public boolean requestNetworkTransitionWakelock(String forWhom) { 82414f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt try { 82514f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt mService.requestNetworkTransitionWakelock(forWhom); 82614f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return true; 82714f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } catch (RemoteException e) { 82814f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return false; 82914f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 83014f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 831ca4306c976d393c3cd04270bc2de0af2f4f30fa5Robert Greenwalt 83267fd6c92922a94f46c7b6793a808f473a43eddd3Robert Greenwalt /** 833d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param networkType The type of network you want to report on 834d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param percentage The quality of the connection 0 is bad, 100 is good 835d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 836d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 837d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public void reportInetCondition(int networkType, int percentage) { 838d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt try { 839d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt mService.reportInetCondition(networkType, percentage); 840d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } catch (RemoteException e) { 841d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 842d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 843434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 844434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 845434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @param proxyProperties The definition for the new global http proxy 846434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 847434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 848434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public void setGlobalProxy(ProxyProperties p) { 849434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 850434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt mService.setGlobalProxy(p); 851434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 852434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 853434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 854434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 855434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 856434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current global proxy 857434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 858434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 859434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getGlobalProxy() { 860434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 861434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getGlobalProxy(); 862434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 863434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 864434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 865434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 866434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 867434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 868434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current proxy (global if set, network specific if not) 869434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 870434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 871434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getProxy() { 872434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 873434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getProxy(); 874434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 875434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 876434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 877434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 878d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt 879d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt /** 880d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * @param networkType The network who's dependence has changed 881d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * @param met Boolean - true if network use is ok, false if not 882d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * {@hide} 883d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt */ 884d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt public void setDataDependency(int networkType, boolean met) { 885d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt try { 886d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt mService.setDataDependency(networkType, met); 887d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } catch (RemoteException e) { 888d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } 889d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } 8909b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt 8919b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt /** 8929b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * Returns true if the hardware supports the given network type 8939b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * else it returns false. This doesn't indicate we have coverage 8949b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * or are authorized onto a network, just whether or not the 8959b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * hardware supports it. For example a gsm phone without a sim 8969b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * should still return true for mobile data, but a wifi only tablet 8979b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * would return false. 8989b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * @param networkType The nework type we'd like to check 8999b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * @return true if supported, else false 9009b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt * @hide 9019b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt */ 9029b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt public boolean isNetworkSupported(int networkType) { 9039b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt try { 9049b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt return mService.isNetworkSupported(networkType); 9059b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt } catch (RemoteException e) {} 9069b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt return false; 9079b2886e24301e5d4e7052ec4a6eaff273d3f516cRobert Greenwalt } 9089f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey 9099f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey /** 9109f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * Returns if the currently active data network is metered. A network is 9119f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * classified as metered when the user is sensitive to heavy data usage on 9129f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * that connection. You should check this before doing large data transfers, 9139f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * and warn the user or delay the operation until another network is 9149f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey * available. 9159f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey */ 9169f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey public boolean isActiveNetworkMetered() { 9179f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey try { 9189f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey return mService.isActiveNetworkMetered(); 9199f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey } catch (RemoteException e) { 9209f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey return false; 9219f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey } 9229f7cbf0e50bcb7e9163b23524814003ba8784732Jeff Sharkey } 92369ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey 92469ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey /** {@hide} */ 92569ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey public boolean updateLockdownVpn() { 92669ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey try { 92769ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey return mService.updateLockdownVpn(); 92869ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey } catch (RemoteException e) { 92969ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey return false; 93069ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey } 93169ddab4575ff684c533c995e07ca15fe18543fc0Jeff Sharkey } 932da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 933da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff /** 934da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff * {@hide} 935da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff */ 936da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff public void captivePortalCheckComplete(NetworkInfo info) { 937da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff try { 938da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff mService.captivePortalCheckComplete(info); 939da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } catch (RemoteException e) { 940da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } 941da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff } 942da6da0907b28d4704aabbdb1bbeb4300954670d1Irfan Sheriff 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 944