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