ConnectivityManager.java revision 2a091d7aa0c174986387e5d56bf97a87fe075bdb
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
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Class that answers queries about the state of network connectivity. It also
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * notifies applications when network connectivity changes. Get an instance
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this class by calling
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Context#getSystemService(String) Context.getSystemService(Context.CONNECTIVITY_SERVICE)}.
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The primary responsibilities of this class are to:
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <ol>
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)</li>
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Send broadcast intents when network connectivity changes</li>
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Attempt to "fail over" to another network when connectivity to a network
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is lost</li>
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Provide an API that allows applications to query the coarse-grained or fine-grained
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * state of the available networks</li>
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </ol>
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ConnectivityManager
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A change in network connectivity has occurred. A connection has either
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * been established or lost. The NetworkInfo for the affected network is
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sent as an extra; it should be consulted to see what kind of
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connectivity event occurred.
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p/>
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If this is a connection that was the result of failing over from a
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * disconnected network, then the FAILOVER_CONNECTION boolean extra is
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * set to true.
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p/>
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * For a loss of connectivity, if the connectivity manager is attempting
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to connect (or has already connected) to another network, the
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * NetworkInfo for the new network is also passed as an extra. This lets
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * any receivers of the broadcast know that they should not necessarily
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tell the user that no data traffic will be possible. Instead, the
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reciever should expect another broadcast soon, indicating either that
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the failover attempt succeeded (and so there is still overall data
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connectivity), or that the failover attempt failed, meaning that all
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connectivity has been lost.
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p/>
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is set to {@code true} if there are no connected networks at all.
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a {@link NetworkInfo} object. Retrieve with
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.content.Intent#getParcelableExtra(String)}.
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_NETWORK_INFO = "networkInfo";
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a boolean that indicates whether a connect event
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is for a network to which the connectivity manager was failing over
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * following a disconnect on another network.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_IS_FAILOVER = "isFailover";
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a {@link NetworkInfo} object. This is supplied when
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * there is another network that it may be possible to connect to. Retrieve with
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.content.Intent#getParcelableExtra(String)}.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork";
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a boolean that indicates whether there is a
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * complete lack of connectivity, i.e., no network is available.
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_NO_CONNECTIVITY = "noConnectivity";
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a string that indicates why an attempt to connect
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to a network failed. The string has no particular structure. It is
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * intended to be used in notifications presented to users. Retrieve
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * it with {@link android.content.Intent#getStringExtra(String)}.
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_REASON = "reason";
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The lookup key for a string that provides optionally supplied
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * extra information about the network state. The information
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may be passed up from the lower networking layers, and its
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * meaning may be specific to a particular network type. Retrieve
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * it with {@link android.content.Intent#getStringExtra(String)}.
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String EXTRA_EXTRA_INFO = "extraInfo";
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Broadcast Action: The setting for background data usage has changed
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * values. Use {@link #getBackgroundDataSetting()} to get the current value.
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If an application uses the network in the background, it should listen
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for this broadcast and stop using the background data if the value is
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * false.
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED =
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
119d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * Broadcast Action: A tetherable connection has come or gone
120d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * TODO - finish the doc
121d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * @hide
122d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
123d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    public static final String ACTION_TETHER_STATE_CHANGED =
124d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            "android.net.conn.TETHER_STATE_CHANGED";
125d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
126d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
127d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * @hide
1282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * gives a String[]
129d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
1302a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
131d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
132d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
133d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * @hide
1342a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * gives a String[]
135d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
1362a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public static final String EXTRA_ACTIVE_TETHER = "activeArray";
1372a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
1382a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    /**
1392a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * @hide
1402a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * gives a String[]
1412a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     */
1422a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public static final String EXTRA_ERRORED_TETHER = "erroredArray";
143d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
144d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
14542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * The Default Mobile data connection.  When active, all data traffic
14642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * will use this connection by default.  Should not coexist with other
14742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * default connections.
14842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
14942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_MOBILE      = 0;
15042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
15142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * The Default WIFI data connection.  When active, all data traffic
15242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * will use this connection by default.  Should not coexist with other
15342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * default connections.
15442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
15542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_WIFI        = 1;
15642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
15742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * An MMS-specific Mobile data connection.  This connection may be the
1581bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt     * same as {@link #TYPE_MOBILE} but it may be different.  This is used
15942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * by applications needing to talk to the carrier's Multimedia Messaging
16042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * Service servers.  It may coexist with default data connections.
16142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
16242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_MOBILE_MMS  = 2;
16342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
16442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * A SUPL-specific Mobile data connection.  This connection may be the
1651bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt     * same as {@link #TYPE_MOBILE} but it may be different.  This is used
16642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * by applications needing to talk to the carrier's Secure User Plane
16742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * Location servers for help locating the device.  It may coexist with
16842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * default data connections.
16942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
17042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_MOBILE_SUPL = 3;
17142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
17242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * A DUN-specific Mobile data connection.  This connection may be the
1731bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt     * same as {@link #TYPE_MOBILE} but it may be different.  This is used
17442acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * by applicaitons performing a Dial Up Networking bridge so that
17542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * the carrier is aware of DUN traffic.  It may coexist with default data
17642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * connections.
17742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
17842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_MOBILE_DUN  = 4;
17942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /**
18042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * A High Priority Mobile data connection.  This connection is typically
1811bc3c3775b7b2cbaec50cd377db437f284478de0Robert Greenwalt     * the same as {@link #TYPE_MOBILE} but the routing setup is different.
18242acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * Only requesting processes will have access to the Mobile DNS servers
18342acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     * and only IP's explicitly requested via {@link #requestRouteToHost}
184c849cdf5cfde007ce591838c4e2b777fb4843c8dRobert Greenwalt     * will route over this interface if a default route exists.
18542acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt     */
18642acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int TYPE_MOBILE_HIPRI = 5;
18742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /** {@hide} */
18842acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int MAX_RADIO_TYPE   = TYPE_WIFI;
18942acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    /** {@hide} */
19042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt    public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_HIPRI;
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI;
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private IConnectivityManager mService;
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static public boolean isNetworkTypeValid(int networkType) {
19742acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt        return networkType >= 0 && networkType <= MAX_NETWORK_TYPE;
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setNetworkPreference(int preference) {
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mService.setNetworkPreference(preference);
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getNetworkPreference() {
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.getNetworkPreference();
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return -1;
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NetworkInfo getActiveNetworkInfo() {
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.getActiveNetworkInfo();
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NetworkInfo getNetworkInfo(int networkType) {
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.getNetworkInfo(networkType);
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NetworkInfo[] getAllNetworkInfo() {
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.getAllNetworkInfo();
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** {@hide} */
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean setRadios(boolean turnOn) {
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.setRadios(turnOn);
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** {@hide} */
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean setRadio(int networkType, boolean turnOn) {
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.setRadio(networkType, turnOn);
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Tells the underlying networking system that the caller wants to
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * begin using the named feature. The interpretation of {@code feature}
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is completely up to each networking implementation.
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param networkType specifies which network the request pertains to
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param feature the name of the feature to be used
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return an integer value representing the outcome of the request.
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The interpretation of this value is specific to each networking
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation+feature combination, except that the value {@code -1}
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * always indicates failure.
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int startUsingNetworkFeature(int networkType, String feature) {
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
27042acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt            return mService.startUsingNetworkFeature(networkType, feature,
27142acef37339afe6ac608c842f1637870ee9c4f6cRobert Greenwalt                    new Binder());
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return -1;
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Tells the underlying networking system that the caller is finished
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * using the named feature. The interpretation of {@code feature}
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is completely up to each networking implementation.
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param networkType specifies which network the request pertains to
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param feature the name of the feature that is no longer needed
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return an integer value representing the outcome of the request.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The interpretation of this value is specific to each networking
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation+feature combination, except that the value {@code -1}
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * always indicates failure.
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int stopUsingNetworkFeature(int networkType, String feature) {
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.stopUsingNetworkFeature(networkType, feature);
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return -1;
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Ensure that a network route exists to deliver traffic to the specified
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * host via the specified network interface. An attempt to add a route that
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * already exists is ignored, but treated as successful.
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param networkType the type of the network over which traffic to the specified
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * host is to be routed
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param hostAddress the IP address of the host to which the route is desired
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} on success, {@code false} on failure
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean requestRouteToHost(int networkType, int hostAddress) {
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.requestRouteToHost(networkType, hostAddress);
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the value of the setting for background data usage. If false,
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * applications should not use the network if the application is not in the
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * foreground. Developers should respect this setting, and check the value
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this before performing any background data operations.
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * All applications that have background services that use the network
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * should listen to {@link #ACTION_BACKGROUND_DATA_SETTING_CHANGED}.
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Whether background data usage is allowed.
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean getBackgroundDataSetting() {
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return mService.getBackgroundDataSetting();
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // Err on the side of safety
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return false;
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the value of the setting for background data usage.
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param allowBackgroundData Whether an application should use data while
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            it is in the background.
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @attr ref android.Manifest.permission#CHANGE_BACKGROUND_DATA_SETTING
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #getBackgroundDataSetting()
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setBackgroundDataSetting(boolean allowBackgroundData) {
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mService.setBackgroundDataSetting(allowBackgroundData);
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (RemoteException e) {
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Don't allow use of default constructor.
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SuppressWarnings({"UnusedDeclaration"})
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private ConnectivityManager() {
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@hide}
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ConnectivityManager(IConnectivityManager service) {
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (service == null) {
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new IllegalArgumentException(
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                "ConnectivityManager() cannot be constructed with null service");
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mService = service;
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
367d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
368d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
369d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * {@hide}
370d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
371d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    public String[] getTetherableIfaces() {
372d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        try {
373d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return mService.getTetherableIfaces();
374d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        } catch (RemoteException e) {
375d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return new String[0];
376d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        }
377d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    }
378d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
379d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
380d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * {@hide}
381d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
382d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    public String[] getTetheredIfaces() {
383d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        try {
384d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return mService.getTetheredIfaces();
385d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        } catch (RemoteException e) {
386d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return new String[0];
387d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        }
388d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    }
389d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
390d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
391d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * {@hide}
392d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
393d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    public boolean tether(String iface) {
394d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        try {
395d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return mService.tether(iface);
396d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        } catch (RemoteException e) {
397d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return false;
398d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        }
399d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    }
400d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt
401d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    /**
402d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     * {@hide}
403d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt     */
404d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    public boolean untether(String iface) {
405d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        try {
406d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return mService.untether(iface);
407d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        } catch (RemoteException e) {
408d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt            return false;
409d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt        }
410d0e18ffb82b59d38aeaf0e552f48e734202719abRobert Greenwalt    }
4112a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
4122a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    /**
4132a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * {@hide}
4142a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     */
4152a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public boolean isTetheringSupported() {
4162a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        try {
4172a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return mService.isTetheringSupported();
4182a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        } catch (RemoteException e) {
4192a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return false;
4202a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        }
4212a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    }
4222a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
4232a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    /**
4242a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * {@hide}
4252a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     */
4262a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public String[] getTetherableUsbRegexs() {
4272a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        try {
4282a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return mService.getTetherableUsbRegexs();
4292a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        } catch (RemoteException e) {
4302a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return new String[0];
4312a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        }
4322a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    }
4332a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt
4342a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    /**
4352a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     * {@hide}
4362a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt     */
4372a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    public String[] getTetherableWifiRegexs() {
4382a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        try {
4392a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return mService.getTetherableWifiRegexs();
4402a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        } catch (RemoteException e) {
4412a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt            return new String[0];
4422a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt        }
4432a091d7aa0c174986387e5d56bf97a87fe075bdbRobert Greenwalt    }
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
445