ConnectivityManager.java revision 15c7439acb22ab079dd2ebe42bdf0d2ffd525c5d
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; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwaltimport java.net.InetAddress; 25585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwaltimport java.net.UnknownHostException; 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 */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ConnectivityManager 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A change in network connectivity has occurred. A connection has either 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * been established or lost. The NetworkInfo for the affected network is 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sent as an extra; it should be consulted to see what kind of 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity event occurred. 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this is a connection that was the result of failing over from a 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * disconnected network, then the FAILOVER_CONNECTION boolean extra is 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * set to true. 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a loss of connectivity, if the connectivity manager is attempting 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to connect (or has already connected) to another network, the 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * NetworkInfo for the new network is also passed as an extra. This lets 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * any receivers of the broadcast know that they should not necessarily 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tell the user that no data traffic will be possible. Instead, the 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * reciever should expect another broadcast soon, indicating either that 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the failover attempt succeeded (and so there is still overall data 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity), or that the failover attempt failed, meaning that all 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connectivity has been lost. 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is set to {@code true} if there are no connected networks at all. 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. Retrieve with 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NETWORK_INFO = "networkInfo"; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether a connect event 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is for a network to which the connectivity manager was failing over 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * following a disconnect on another network. 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_IS_FAILOVER = "isFailover"; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a {@link NetworkInfo} object. This is supplied when 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there is another network that it may be possible to connect to. Retrieve with 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#getParcelableExtra(String)}. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork"; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a boolean that indicates whether there is a 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * complete lack of connectivity, i.e., no network is available. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity"; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that indicates why an attempt to connect 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to a network failed. The string has no particular structure. It is 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * intended to be used in notifications presented to users. Retrieve 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_REASON = "reason"; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The lookup key for a string that provides optionally supplied 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extra information about the network state. The information 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * may be passed up from the lower networking layers, and its 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meaning may be specific to a particular network type. Retrieve 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it with {@link android.content.Intent#getStringExtra(String)}. 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String EXTRA_EXTRA_INFO = "extraInfo"; 108d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt /** 109d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * The lookup key for an int that provides information about 110d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * our connection to the internet at large. 0 indicates no connection, 111d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * 100 indicates a great connection. Retrieve it with 112d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@link android.content.Intent@getIntExtra(String)}. 113d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 114d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 115d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public static final String EXTRA_INET_CONDITION = "inetCondition"; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Broadcast Action: The setting for background data usage has changed 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Use {@link #getBackgroundDataSetting()} to get the current value. 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If an application uses the network in the background, it should listen 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for this broadcast and stop using the background data if the value is 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * false. 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1291e9aac2bd855f12708d3049eff4435fa4a2f4317Robert Greenwalt 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 /** 16742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default Mobile data connection. When active, all data traffic 16842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * will use this connection by default. Should not coexist with other 16942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * default connections. 17042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 17142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE = 0; 17242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 17342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * The Default WIFI data connection. When active, all data traffic 17442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * will use this connection by default. Should not coexist with other 17542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * default connections. 17642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 17742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_WIFI = 1; 17842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 17942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * An MMS-specific Mobile data connection. This connection may be the 1801bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 18142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Multimedia Messaging 18242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Service servers. It may coexist with default data connections. 18342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 18442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_MMS = 2; 18542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 18642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A SUPL-specific Mobile data connection. This connection may be the 1871bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 18842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applications needing to talk to the carrier's Secure User Plane 18942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Location servers for help locating the device. It may coexist with 19042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * default data connections. 19142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 19242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_SUPL = 3; 19342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 19442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A DUN-specific Mobile data connection. This connection may be the 1951bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * same as {@link #TYPE_MOBILE} but it may be different. This is used 19642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * by applicaitons performing a Dial Up Networking bridge so that 19742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * the carrier is aware of DUN traffic. It may coexist with default data 19842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * connections. 19942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 20042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_DUN = 4; 20142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt /** 20242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * A High Priority Mobile data connection. This connection is typically 2031bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt * the same as {@link #TYPE_MOBILE} but the routing setup is different. 20442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * Only requesting processes will have access to the Mobile DNS servers 20542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt * and only IP's explicitly requested via {@link #requestRouteToHost} 206c849cdf5cfde007ce591838c4e2b777fb4843c8dRobert Greenwalt * will route over this interface if a default route exists. 20742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt */ 20842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt public static final int TYPE_MOBILE_HIPRI = 5; 2098214deb542392f48b6c3fdc377fdf976c0b17a32jsh /** 2108214deb542392f48b6c3fdc377fdf976c0b17a32jsh * The Default WiMAX data connection. When active, all data traffic 2118214deb542392f48b6c3fdc377fdf976c0b17a32jsh * will use this connection by default. Should not coexist with other 2128214deb542392f48b6c3fdc377fdf976c0b17a32jsh * default connections. 2138214deb542392f48b6c3fdc377fdf976c0b17a32jsh */ 2148214deb542392f48b6c3fdc377fdf976c0b17a32jsh public static final int TYPE_WIMAX = 6; 215da3d5e6587c1476d489495ac93e84ebf223024c9Robert Greenwalt 21615c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh /** 21715c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh * Bluetooth data connection. This is used for Bluetooth reverse tethering. 21815c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh * @hide 21915c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh */ 22015c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_BLUETOOTH = 7; 22115c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh 222da3d5e6587c1476d489495ac93e84ebf223024c9Robert Greenwalt /** {@hide} */ 22315c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int TYPE_DUMMY = 8; 2248214deb542392f48b6c3fdc377fdf976c0b17a32jsh /** {@hide} TODO: Need to adjust this for WiMAX. */ 22515c7439acb22ab079dd2ebe42bdf0d2ffd525c5dJaikumar Ganesh public static final int MAX_RADIO_TYPE = TYPE_DUMMY; 2268214deb542392f48b6c3fdc377fdf976c0b17a32jsh /** {@hide} TODO: Need to adjust this for WiMAX. */ 227da3d5e6587c1476d489495ac93e84ebf223024c9Robert Greenwalt public static final int MAX_NETWORK_TYPE = TYPE_DUMMY; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private IConnectivityManager mService; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public boolean isNetworkTypeValid(int networkType) { 23442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return networkType >= 0 && networkType <= MAX_NETWORK_TYPE; 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setNetworkPreference(int preference) { 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.setNetworkPreference(preference); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getNetworkPreference() { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkPreference(); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getActiveNetworkInfo() { 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getActiveNetworkInfo(); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo getNetworkInfo(int networkType) { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getNetworkInfo(networkType); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public NetworkInfo[] getAllNetworkInfo() { 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getAllNetworkInfo(); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 276d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt /** @hide */ 277d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getActiveLinkProperties() { 278d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 279d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getActiveLinkProperties(); 280d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 281d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 282d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 283d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 284d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 285d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt /** @hide */ 286d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt public LinkProperties getLinkProperties(int networkType) { 287d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt try { 288d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return mService.getLinkProperties(networkType); 289d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } catch (RemoteException e) { 290d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt return null; 291d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 292d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt } 293d192dad69e9e5a820c5c11d8cd34460c9cc2ed11Robert Greenwalt 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadios(boolean turnOn) { 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadios(turnOn); 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** {@hide} */ 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setRadio(int networkType, boolean turnOn) { 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.setRadio(networkType, turnOn); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller wants to 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * begin using the named feature. The interpretation of {@code feature} 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature to be used 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int startUsingNetworkFeature(int networkType, String feature) { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 32542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt return mService.startUsingNetworkFeature(networkType, feature, 32642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt new Binder()); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tells the underlying networking system that the caller is finished 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * using the named feature. The interpretation of {@code feature} 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is completely up to each networking implementation. 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType specifies which network the request pertains to 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param feature the name of the feature that is no longer needed 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer value representing the outcome of the request. 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The interpretation of this value is specific to each networking 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation+feature combination, except that the value {@code -1} 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always indicates failure. 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int stopUsingNetworkFeature(int networkType, String feature) { 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.stopUsingNetworkFeature(networkType, feature); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Ensure that a network route exists to deliver traffic to the specified 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host via the specified network interface. An attempt to add a route that 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * already exists is ignored, but treated as successful. 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param networkType the type of the network over which traffic to the specified 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * host is to be routed 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param hostAddress the IP address of the host to which the route is desired 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return {@code true} on success, {@code false} on failure 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean requestRouteToHost(int networkType, int hostAddress) { 361585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt InetAddress inetAddress = NetworkUtils.intToInetAddress(hostAddress); 362585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 363585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt if (inetAddress == null) { 364585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return false; 365585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 366585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 367585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return requestRouteToHostAddress(networkType, inetAddress); 368585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt } 369585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt 370585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt /** 371585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * Ensure that a network route exists to deliver traffic to the specified 372585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host via the specified network interface. An attempt to add a route that 373585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * already exists is ignored, but treated as successful. 374585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param networkType the type of the network over which traffic to the specified 375585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * host is to be routed 376585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @param hostAddress the IP address of the host to which the route is desired 377585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @return {@code true} on success, {@code false} on failure 378585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt * @hide 379585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt */ 380585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) { 381585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt byte[] address = hostAddress.getAddress(); 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 383585ac0fc8dde3fe35ec4c71c8f215f2c84139b8bRobert Greenwalt return mService.requestRouteToHostAddress(networkType, address); 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the value of the setting for background data usage. If false, 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * applications should not use the network if the application is not in the 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground. Developers should respect this setting, and check the value 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this before performing any background data operations. 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All applications that have background services that use the network 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * should listen to {@link #ACTION_BACKGROUND_DATA_SETTING_CHANGED}. 3976fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Whether background data usage is allowed. 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getBackgroundDataSetting() { 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mService.getBackgroundDataSetting(); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4046fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang // Err on the side of safety 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the value of the setting for background data usage. 411c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param allowBackgroundData Whether an application should use data while 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it is in the background. 414c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.Manifest.permission#CHANGE_BACKGROUND_DATA_SETTING 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getBackgroundDataSetting() 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setBackgroundDataSetting(boolean allowBackgroundData) { 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService.setBackgroundDataSetting(allowBackgroundData); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 425c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 426c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 427c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Gets the value of the setting for enabling Mobile data. 428c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 429c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @return Whether mobile data is enabled. 430c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 431c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 432c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public boolean getMobileDataEnabled() { 433c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 434c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return mService.getMobileDataEnabled(); 435c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 436c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt return true; 437c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 438c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 439c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 440c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt /** 441c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * Sets the persisted value for enabling/disabling Mobile data. 442c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * 4435a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param enabled Whether the mobile data connection should be 444c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * used or not. 445c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt * @hide 446c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt */ 447c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt public void setMobileDataEnabled(boolean enabled) { 448c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt try { 449c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt mService.setMobileDataEnabled(enabled); 450c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } catch (RemoteException e) { 451c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 452c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt } 453c03fa5014912684367174ff3cce664deb29f5e0eRobert Greenwalt 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Don't allow use of default constructor. 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SuppressWarnings({"UnusedDeclaration"}) 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ConnectivityManager() { 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConnectivityManager(IConnectivityManager service) { 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (service == null) { 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new IllegalArgumentException( 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "ConnectivityManager() cannot be constructed with null service"); 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mService = service; 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 471d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 472d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 473d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 474d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 475d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetherableIfaces() { 476d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 477d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetherableIfaces(); 478d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 479d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 480d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 481d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 482d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 483d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 484d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 485d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 486d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt public String[] getTetheredIfaces() { 487d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 488d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.getTetheredIfaces(); 489d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 490d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return new String[0]; 491d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 492d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 493d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 494d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 495d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 496d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 4975a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public String[] getTetheringErroredIfaces() { 4985a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 4995a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getTetheringErroredIfaces(); 5005a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 5015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return new String[0]; 5025a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 5035a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 5045a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 5055a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 5065a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 5075a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 5085a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 5095a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int tether(String iface) { 510d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 511d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.tether(iface); 512d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 5135a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 514d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 515d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 516d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt 517d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt /** 5185a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error A TETHER_ERROR value indicating success or failure type 519d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt * {@hide} 520d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt */ 5215a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int untether(String iface) { 522d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt try { 523d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt return mService.untether(iface); 524d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } catch (RemoteException e) { 5255a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 526d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 527d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt } 5282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 5292a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 5302a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 5312a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 5322a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public boolean isTetheringSupported() { 5332a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 5342a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.isTetheringSupported(); 5352a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 5362a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return false; 5372a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5382a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5392a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 5402a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 5412a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 5422a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 5432a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableUsbRegexs() { 5442a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 5452a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableUsbRegexs(); 5462a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 5472a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 5482a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5492a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5502a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt 5512a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt /** 5522a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt * {@hide} 5532a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt */ 5542a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt public String[] getTetherableWifiRegexs() { 5552a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt try { 5562a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return mService.getTetherableWifiRegexs(); 5572a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } catch (RemoteException e) { 5582a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt return new String[0]; 5592a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5602a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt } 5615a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 5626fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang /** 5636fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang * {@hide} 5646fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang */ 5656fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang public String[] getTetherableBluetoothRegexs() { 5666fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang try { 5676fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return mService.getTetherableBluetoothRegexs(); 5686fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } catch (RemoteException e) { 5696fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang return new String[0]; 5706fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 5716fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang } 5726fdd0c6274c81b337ad35b70480f881daf7354c3Danica Chang 5735a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5745a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_NO_ERROR = 0; 5755a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5765a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; 5775a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5785a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; 5795a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5805a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNSUPPORTED = 3; 5815a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5825a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; 5835a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5845a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_MASTER_ERROR = 5; 5855a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5865a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; 5875a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5885a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; 5895a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5905a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8; 5915a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5925a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9; 5935a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** {@hide} */ 5945a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; 5955a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt 5965a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt /** 5975a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @param iface The name of the interface we're interested in 5985a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * @return error The error code of the last error tethering or untethering the named 5995a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * interface 6005a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt * {@hide} 6015a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt */ 6025a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt public int getLastTetherError(String iface) { 6035a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt try { 6045a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return mService.getLastTetherError(iface); 6055a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } catch (RemoteException e) { 6065a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt return TETHER_ERROR_SERVICE_UNAVAIL; 6075a73506cdd466f2b96686ced3ff0f7ca224d1143Robert Greenwalt } 60814f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 60914f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt 61014f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt /** 61114f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * Ensure the device stays awake until we connect with the next network 61214f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @param forWhome The name of the network going down for logging purposes 61314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * @return {@code true} on success, {@code false} on failure 61414f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt * {@hide} 61514f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt */ 61614f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt public boolean requestNetworkTransitionWakelock(String forWhom) { 61714f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt try { 61814f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt mService.requestNetworkTransitionWakelock(forWhom); 61914f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return true; 62014f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } catch (RemoteException e) { 62114f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt return false; 62214f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 62314f2ef4c9da27a3d58d65dc9f684c5f764ee279aRobert Greenwalt } 624ca4306c976d393c3cd04270bc2de0af2f4f30fa5Robert Greenwalt 62567fd6c92922a94f46c7b6793a808f473a43eddd3Robert Greenwalt /** 626d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param networkType The type of network you want to report on 627d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * @param percentage The quality of the connection 0 is bad, 100 is good 628d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt * {@hide} 629d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt */ 630d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt public void reportInetCondition(int networkType, int percentage) { 631d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt try { 632d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt mService.reportInetCondition(networkType, percentage); 633d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } catch (RemoteException e) { 634d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 635d7085fcf6567452a9d6fc69b0c6b1bf556f4c1b9Robert Greenwalt } 636434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 637434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 638434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @param proxyProperties The definition for the new global http proxy 639434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 640434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 641434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public void setGlobalProxy(ProxyProperties p) { 642434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 643434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt mService.setGlobalProxy(p); 644434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 645434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 646434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 647434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 648434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 649434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current global proxy 650434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 651434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 652434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getGlobalProxy() { 653434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 654434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getGlobalProxy(); 655434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 656434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 657434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 658434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 659434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt 660434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt /** 661434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * @return proxyProperties for the current proxy (global if set, network specific if not) 662434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt * {@hide} 663434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt */ 664434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt public ProxyProperties getProxy() { 665434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt try { 666434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return mService.getProxy(); 667434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } catch (RemoteException e) { 668434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt return null; 669434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 670434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt } 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 672