ConnectivityManager.java revision 6c2260b3af3a9243aa7f04cf03106f31817cb4c1
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 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.annotation.SdkConstant; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.annotation.SdkConstant.SdkConstantType; 2142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwaltimport android.os.Binder; 22ff3bdca31f4cf2bd607519b276dd175763aa1784Chia-chi Yehimport android.os.ParcelFileDescriptor; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwaltimport java.net.InetAddress; 26585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Class that answers queries about the state of network connectivity. It also 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * notifies applications when network connectivity changes. Get an instance 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this class by calling 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Context#getSystemService(String) Context.getSystemService(Context.CONNECTIVITY_SERVICE)}. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The primary responsibilities of this class are to: 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <ol> 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)</li> 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Send broadcast intents when network connectivity changes</li> 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Attempt to "fail over" to another network when connectivity to a network 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is lost</li> 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Provide an API that allows applications to query the coarse-grained or fine-grained 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state of the available networks</li> 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </ol> 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 43c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkeypublic class ConnectivityManager { 44c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey private static final String TAG = "ConnectivityManager"; 45c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A change in network connectivity has occurred. A connection has either 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been established or lost. The NetworkInfo for the affected network is 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent as an extra; it should be consulted to see what kind of 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity event occurred. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this is a connection that was the result of failing over from a 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * disconnected network, then the FAILOVER_CONNECTION boolean extra is 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * set to true. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a loss of connectivity, if the connectivity manager is attempting 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to connect (or has already connected) to another network, the 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NetworkInfo for the new network is also passed as an extra. This lets 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any receivers of the broadcast know that they should not necessarily 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tell the user that no data traffic will be possible. Instead, the 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * reciever should expect another broadcast soon, indicating either that 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the failover attempt succeeded (and so there is still overall data 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity), or that the failover attempt failed, meaning that all 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity has been lost. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is set to {@code true} if there are no connected networks at all. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. Retrieve with 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NETWORK_INFO = "networkInfo"; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether a connect event 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is for a network to which the connectivity manager was failing over 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * following a disconnect on another network. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_IS_FAILOVER = "isFailover"; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. This is supplied when 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there is another network that it may be possible to connect to. Retrieve with 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork"; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether there is a 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * complete lack of connectivity, i.e., no network is available. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity"; 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that indicates why an attempt to connect 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to a network failed. The string has no particular structure. It is 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * intended to be used in notifications presented to users. Retrieve 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_REASON = "reason"; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that provides optionally supplied 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extra information about the network state. The information 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * may be passed up from the lower networking layers, and its 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meaning may be specific to a particular network type. Retrieve 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_EXTRA_INFO = "extraInfo"; 109d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt /** 110d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * The lookup key for an int that provides information about 111d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * our connection to the internet at large. 0 indicates no connection, 112d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * 100 indicates a great connection. Retrieve it with 113c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey * {@link android.content.Intent#getIntExtra(String, int)}. 114d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 115d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 116d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public static final String EXTRA_INET_CONDITION = "inetCondition"; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast Action: The setting for background data usage has changed 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Use {@link #getBackgroundDataSetting()} to get the current value. 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If an application uses the network in the background, it should listen 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for this broadcast and stop using the background data if the value is 124c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey * {@code false}. 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1301e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt /** 1311e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * Broadcast Action: The network connection may not be good 1321e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * uses {@code ConnectivityManager.EXTRA_INET_CONDITION} and 1331e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * {@code ConnectivityManager.EXTRA_NETWORK_INFO} to specify 1341e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * the network and it's condition. 1351e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt * @hide 1361e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt */ 1371e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt public static final String INET_CONDITION_ACTION = 1381e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt "android.net.conn.INET_CONDITION_ACTION"; 1391e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt 14042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 141d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * Broadcast Action: A tetherable connection has come or gone 142d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * TODO - finish the doc 143d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 144d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 145d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public static final String ACTION_TETHER_STATE_CHANGED = 146d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt "android.net.conn.TETHER_STATE_CHANGED"; 147d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 148d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 149d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 1502a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 151d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 1522a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_AVAILABLE_TETHER = "availableArray"; 153d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 154d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 155d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * @hide 1562a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 157d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 1582a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_ACTIVE_TETHER = "activeArray"; 1592a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 1602a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 1612a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * @hide 1622a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * gives a String[] 1632a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 1642a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public static final String EXTRA_ERRORED_TETHER = "erroredArray"; 165d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 166d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 167ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt * The absence of APN.. 168ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt * @hide 169ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt */ 170ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt public static final int TYPE_NONE = -1; 171ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt 172ccf83af1017b7b1eaf12f6ec3d2cb2137a7cdda9Robert Greenwalt /** 17342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default Mobile data connection. When active, all data traffic 17497ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 17542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 17642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE = 0; 17742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 17842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default WIFI data connection. When active, all data traffic 17997ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 18042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 18142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_WIFI = 1; 18242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 18342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * An MMS-specific Mobile data connection. This connection may be the 1841bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 18542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Multimedia Messaging 18642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Service servers. It may coexist with default data connections. 18742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 18842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_MMS = 2; 18942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 19042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A SUPL-specific Mobile data connection. This connection may be the 1911bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 19242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Secure User Plane 19342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Location servers for help locating the device. It may coexist with 19442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * default data connections. 19542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 19642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_SUPL = 3; 19742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 19842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A DUN-specific Mobile data connection. This connection may be the 1991bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 20042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applicaitons performing a Dial Up Networking bridge so that 20142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * the carrier is aware of DUN traffic. It may coexist with default data 20242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * connections. 20342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 20442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_DUN = 4; 20542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 20642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A High Priority Mobile data connection. This connection is typically 2071bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * the same as {@link #TYPE_MOBILE} but the routing setup is different. 20842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Only requesting processes will have access to the Mobile DNS servers 20942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * and only IP's explicitly requested via {@link #requestRouteToHost} 210c849cdf5cfde007ce591838c4e2b777fb4843c8dRobert Greenwalt * will route over this interface if a default route exists. 21142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 21242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_HIPRI = 5; 2138214deb542392f48b6c3fdc377fdf976c0b17a32jsh /** 2148214deb542392f48b6c3fdc377fdf976c0b17a32jsh * The Default WiMAX data connection. When active, all data traffic 21597ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 2168214deb542392f48b6c3fdc377fdf976c0b17a32jsh */ 2178214deb542392f48b6c3fdc377fdf976c0b17a32jsh public static final int TYPE_WIMAX = 6; 218da3d5e6587c1476d489495ac93e84ebf223024c9Robert Greenwalt 21915c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh /** 22097ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * The Default Bluetooth data connection. When active, all data traffic 22197ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 22215c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh */ 22315c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_BLUETOOTH = 7; 22415c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh 2256081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt /** 2266081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt * Dummy data connection. This should not be used on shipping devices. 2276081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt */ 22815c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_DUMMY = 8; 2299d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2306081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt /** 23197ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * The Default Ethernet data connection. When active, all data traffic 23297ab2d4f86ee9c2b661a00688e934fc7030df22eRobert Greenwalt * will use this connection by default. 2336081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt */ 234e12aec941dfc93b76b5efb9bc9f30d2ba3469434Robert Greenwalt public static final int TYPE_ETHERNET = 9; 2356081084e8831d12d2dd5a9a340ee7d35a54edb8aRobert Greenwalt 2369d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 2379d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * Over the air Adminstration. 2389d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 2399d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 2409d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_FOTA = 10; 2419d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2429d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 2439d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * IP Multimedia Subsystem 2449d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 2459d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 2469d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_IMS = 11; 2479d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2489d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** 2499d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * Carrier Branded Services 2509d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville * {@hide} 2519d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville */ 2529d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int TYPE_MOBILE_CBS = 12; 2539d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2549d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** {@hide} */ 2559d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int MAX_RADIO_TYPE = TYPE_MOBILE_CBS; 2569d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 2579d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville /** {@hide} */ 2589d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_CBS; 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI; 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 262c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey private final IConnectivityManager mService; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 264d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static boolean isNetworkTypeValid(int networkType) { 26542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return networkType >= 0 && networkType <= MAX_NETWORK_TYPE; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 268d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey /** {@hide} */ 269d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static String getNetworkTypeName(int type) { 270d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey switch (type) { 271d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE: 272d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE"; 273d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_WIFI: 274d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "WIFI"; 275d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_MMS: 276d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_MMS"; 277d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_SUPL: 278d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_SUPL"; 279d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_DUN: 280d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_DUN"; 281d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_HIPRI: 282d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_HIPRI"; 283d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_WIMAX: 284d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "WIMAX"; 285d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_BLUETOOTH: 286d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "BLUETOOTH"; 287d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_DUMMY: 288d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "DUMMY"; 289d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_ETHERNET: 290d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "ETHERNET"; 291d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_FOTA: 292d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_FOTA"; 293d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_IMS: 294d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_IMS"; 295d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_CBS: 296d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return "MOBILE_CBS"; 297d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey default: 298d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return Integer.toString(type); 299d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 300d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 301d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey 302d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey /** {@hide} */ 303d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey public static boolean isNetworkTypeMobile(int networkType) { 304d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey switch (networkType) { 305d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE: 306d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_MMS: 307d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_SUPL: 308d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_DUN: 309d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_HIPRI: 310d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_FOTA: 311d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_IMS: 312d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey case TYPE_MOBILE_CBS: 313d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return true; 314d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey default: 315d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey return false; 316d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 317d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey } 318d2a458750e5a3d490af09cecb5c28370baf0a913Jeff Sharkey 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setNetworkPreference(int preference) { 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.setNetworkPreference(preference); 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getNetworkPreference() { 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkPreference(); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getActiveNetworkInfo() { 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getActiveNetworkInfo(); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 342c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 343c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey public NetworkInfo getActiveNetworkInfoForUid(int uid) { 344c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey try { 345c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey return mService.getActiveNetworkInfoForUid(uid); 346c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } catch (RemoteException e) { 347c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey return null; 348c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } 349c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey } 350c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getNetworkInfo(int networkType) { 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkInfo(networkType); 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo[] getAllNetworkInfo() { 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getAllNetworkInfo(); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 367c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 368d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getActiveLinkProperties() { 369d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 370d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getActiveLinkProperties(); 371d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 372d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 373d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 374d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 375d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 376c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey /** {@hide} */ 377d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getLinkProperties(int networkType) { 378d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 379d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getLinkProperties(networkType); 380d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 381d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 382d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 383d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 384d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadios(boolean turnOn) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadios(turnOn); 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadio(int networkType, boolean turnOn) { 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadio(networkType, turnOn); 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller wants to 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * begin using the named feature. The interpretation of {@code feature} 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature to be used 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int startUsingNetworkFeature(int networkType, String feature) { 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 41642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return mService.startUsingNetworkFeature(networkType, feature, 41742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt new Binder()); 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller is finished 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * using the named feature. The interpretation of {@code feature} 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature that is no longer needed 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int stopUsingNetworkFeature(int networkType, String feature) { 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.stopUsingNetworkFeature(networkType, feature); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Ensure that a network route exists to deliver traffic to the specified 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host via the specified network interface. An attempt to add a route that 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * already exists is ignored, but treated as successful. 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType the type of the network over which traffic to the specified 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host is to be routed 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param hostAddress the IP address of the host to which the route is desired 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@code true} on success, {@code false} on failure 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean requestRouteToHost(int networkType, int hostAddress) { 452585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt InetAddress inetAddress = NetworkUtils.intToInetAddress(hostAddress); 453585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 454585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt if (inetAddress == null) { 455585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return false; 456585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 457585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 458585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return requestRouteToHostAddress(networkType, inetAddress); 459585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 460585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 461585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt /** 462585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * Ensure that a network route exists to deliver traffic to the specified 463585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host via the specified network interface. An attempt to add a route that 464585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * already exists is ignored, but treated as successful. 465585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param networkType the type of the network over which traffic to the specified 466585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host is to be routed 467585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param hostAddress the IP address of the host to which the route is desired 468585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @return {@code true} on success, {@code false} on failure 469585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @hide 470585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt */ 471585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) { 472585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt byte[] address = hostAddress.getAddress(); 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 474585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return mService.requestRouteToHostAddress(networkType, address); 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value of the setting for background data usage. If false, 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * applications should not use the network if the application is not in the 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground. Developers should respect this setting, and check the value 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this before performing any background data operations. 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All applications that have background services that use the network 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * should listen to {@link #ACTION_BACKGROUND_DATA_SETTING_CHANGED}. 4886fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Whether background data usage is allowed. 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getBackgroundDataSetting() { 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getBackgroundDataSetting(); 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4956fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang // Err on the side of safety 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the value of the setting for background data usage. 502c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param allowBackgroundData Whether an application should use data while 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it is in the background. 505c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.Manifest.permission#CHANGE_BACKGROUND_DATA_SETTING 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getBackgroundDataSetting() 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBackgroundDataSetting(boolean allowBackgroundData) { 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.setBackgroundDataSetting(allowBackgroundData); 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 516c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 517c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 518c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Gets the value of the setting for enabling Mobile data. 519c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 520c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @return Whether mobile data is enabled. 521c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 522c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 523c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public boolean getMobileDataEnabled() { 524c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 525c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return mService.getMobileDataEnabled(); 526c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 527c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return true; 528c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 529c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 530c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 531c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 532c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Sets the persisted value for enabling/disabling Mobile data. 533c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 5345a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param enabled Whether the mobile data connection should be 535c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * used or not. 536c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 537c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 538c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public void setMobileDataEnabled(boolean enabled) { 539c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 540c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt mService.setMobileDataEnabled(enabled); 541c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 542c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 543c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 544c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConnectivityManager(IConnectivityManager service) { 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (service == null) { 550c006f1aec15454782c35e028ad64d79a5c161cc1Jeff Sharkey throw new IllegalArgumentException("missing IConnectivityManager"); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService = service; 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 554d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 555d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 556d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 557d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 558d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetherableIfaces() { 559d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 560d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetherableIfaces(); 561d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 562d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 563d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 564d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 565d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 566d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 567d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 568d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 569d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetheredIfaces() { 570d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 571d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetheredIfaces(); 572d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 573d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 574d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 575d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 576d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 577d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 578d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 579d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 5805a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public String[] getTetheringErroredIfaces() { 5815a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 5825a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getTetheringErroredIfaces(); 5835a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 5845a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return new String[0]; 5855a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 5865a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 5875a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 5885a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 5895a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 5905a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 5915a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 5925a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int tether(String iface) { 593d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 594d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.tether(iface); 595d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 5965a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 597d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 598d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 599d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 600d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 6015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 602d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 603d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 6045a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int untether(String iface) { 605d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 606d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.untether(iface); 607d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 6085a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 609d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 610d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 6112a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 6122a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 6132a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 6142a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 6152a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public boolean isTetheringSupported() { 6162a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 6172a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.isTetheringSupported(); 6182a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 6192a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return false; 6202a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6212a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6222a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 6232a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 6242a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 6252a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 6262a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableUsbRegexs() { 6272a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 6282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableUsbRegexs(); 6292a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 6302a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 6312a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6322a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6332a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 6342a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 6352a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 6362a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 6372a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableWifiRegexs() { 6382a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 6392a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableWifiRegexs(); 6402a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 6412a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 6422a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6432a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 6445a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 6456fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang /** 6466fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * {@hide} 6476fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang */ 6486fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang public String[] getTetherableBluetoothRegexs() { 6496fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang try { 6506fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return mService.getTetherableBluetoothRegexs(); 6516fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } catch (RemoteException e) { 6526fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return new String[0]; 6536fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 6546fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 6556fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang 6566c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood /** 6576c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood * {@hide} 6586c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood */ 6596c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood public int setUsbTethering(boolean enable) { 6606c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood try { 6616c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood return mService.setUsbTethering(enable); 6626c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } catch (RemoteException e) { 6636c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood return TETHER_ERROR_SERVICE_UNAVAIL; 6646c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } 6656c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood } 6666c2260b3af3a9243aa7f04cf03106f31817cb4c1Mike Lockwood 6675a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6685a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_NO_ERROR = 0; 6695a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6705a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; 6715a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6725a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; 6735a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6745a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNSUPPORTED = 3; 6755a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6765a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; 6775a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6785a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_MASTER_ERROR = 5; 6795a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6805a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; 6815a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6825a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; 6835a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6845a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8; 6855a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6865a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9; 6875a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 6885a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; 6895a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 6905a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 6915a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param iface The name of the interface we're interested in 6925a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error The error code of the last error tethering or untethering the named 6935a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * interface 6945a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 6955a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 6965a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int getLastTetherError(String iface) { 6975a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 6985a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getLastTetherError(iface); 6995a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 7005a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 7015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 70214f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 70314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt 70414f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt /** 70514f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * Ensure the device stays awake until we connect with the next network 70614f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @param forWhome The name of the network going down for logging purposes 70714f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @return {@code true} on success, {@code false} on failure 70814f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * {@hide} 70914f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt */ 71014f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt public boolean requestNetworkTransitionWakelock(String forWhom) { 71114f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt try { 71214f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt mService.requestNetworkTransitionWakelock(forWhom); 71314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return true; 71414f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } catch (RemoteException e) { 71514f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return false; 71614f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 71714f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 718ca4306c976d393c3cd04270bc2de0af2f4f30fa5Robert Greenwalt 71967fd6c92922a94f46c7b6793a808f473a43eddd3Robert Greenwalt /** 720d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param networkType The type of network you want to report on 721d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param percentage The quality of the connection 0 is bad, 100 is good 722d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 723d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 724d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public void reportInetCondition(int networkType, int percentage) { 725d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt try { 726d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt mService.reportInetCondition(networkType, percentage); 727d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } catch (RemoteException e) { 728d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 729d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 730434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 731434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 732434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @param proxyProperties The definition for the new global http proxy 733434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 734434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 735434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public void setGlobalProxy(ProxyProperties p) { 736434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 737434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt mService.setGlobalProxy(p); 738434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 739434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 740434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 741434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 742434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 743434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current global proxy 744434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 745434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 746434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getGlobalProxy() { 747434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 748434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getGlobalProxy(); 749434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 750434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 751434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 752434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 753434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 754434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 755434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current proxy (global if set, network specific if not) 756434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 757434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 758434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getProxy() { 759434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 760434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getProxy(); 761434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 762434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 763434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 764434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 765d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt 766d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt /** 767d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * @param networkType The network who's dependence has changed 768d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * @param met Boolean - true if network use is ok, false if not 769d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt * {@hide} 770d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt */ 771d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt public void setDataDependency(int networkType, boolean met) { 772d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt try { 773d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt mService.setDataDependency(networkType, met); 774d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } catch (RemoteException e) { 775d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } 776d55a6b498d66d8fc415908ecf63e50f46cce67e8Robert Greenwalt } 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 778