Merge "Expose quota status for active network."

This commit is contained in:
Jeff Sharkey
2011-08-03 17:05:21 -07:00
committed by Android (Google) Code Review
3 changed files with 52 additions and 5 deletions

View File

@@ -16,10 +16,11 @@
package android.net; package android.net;
import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.SdkConstant; import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SdkConstant.SdkConstantType;
import android.os.Binder; import android.os.Binder;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException; import android.os.RemoteException;
import java.net.InetAddress; import java.net.InetAddress;
@@ -67,11 +68,19 @@ public class ConnectivityManager {
* is set to {@code true} if there are no connected networks at all. * is set to {@code true} if there are no connected networks at all.
*/ */
public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
/** /**
* The lookup key for a {@link NetworkInfo} object. Retrieve with * The lookup key for a {@link NetworkInfo} object. Retrieve with
* {@link android.content.Intent#getParcelableExtra(String)}. * {@link android.content.Intent#getParcelableExtra(String)}.
*
* @deprecated Since {@link NetworkInfo} can vary based on UID, applications
* should always obtain network information through
* {@link #getActiveNetworkInfo()} or
* {@link #getAllNetworkInfo()}.
*/ */
@Deprecated
public static final String EXTRA_NETWORK_INFO = "networkInfo"; public static final String EXTRA_NETWORK_INFO = "networkInfo";
/** /**
* The lookup key for a boolean that indicates whether a connect event * The lookup key for a boolean that indicates whether a connect event
* is for a network to which the connectivity manager was failing over * is for a network to which the connectivity manager was failing over
@@ -514,6 +523,19 @@ public class ConnectivityManager {
} }
} }
/**
* Return quota status for the current active network, or {@code null} if no
* network is active. Quota status can change rapidly, so these values
* shouldn't be cached.
*/
public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
try {
return mService.getActiveNetworkQuotaInfo();
} catch (RemoteException e) {
return null;
}
}
/** /**
* Gets the value of the setting for enabling Mobile data. * Gets the value of the setting for enabling Mobile data.
* *
@@ -546,10 +568,7 @@ public class ConnectivityManager {
* {@hide} * {@hide}
*/ */
public ConnectivityManager(IConnectivityManager service) { public ConnectivityManager(IConnectivityManager service) {
if (service == null) { mService = checkNotNull(service, "missing IConnectivityManager");
throw new IllegalArgumentException("missing IConnectivityManager");
}
mService = service;
} }
/** /**

View File

@@ -18,6 +18,7 @@ package android.net;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkQuotaInfo;
import android.net.NetworkState; import android.net.NetworkState;
import android.net.ProxyProperties; import android.net.ProxyProperties;
import android.os.IBinder; import android.os.IBinder;
@@ -47,6 +48,8 @@ interface IConnectivityManager
NetworkState[] getAllNetworkState(); NetworkState[] getAllNetworkState();
NetworkQuotaInfo getActiveNetworkQuotaInfo();
boolean setRadios(boolean onOff); boolean setRadios(boolean onOff);
boolean setRadio(int networkType, boolean turnOn); boolean setRadio(int networkType, boolean turnOn);

View File

@@ -40,6 +40,7 @@ import android.net.MobileDataStateTracker;
import android.net.NetworkConfig; import android.net.NetworkConfig;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState; import android.net.NetworkInfo.DetailedState;
import android.net.NetworkQuotaInfo;
import android.net.NetworkState; import android.net.NetworkState;
import android.net.NetworkStateTracker; import android.net.NetworkStateTracker;
import android.net.NetworkUtils; import android.net.NetworkUtils;
@@ -737,6 +738,30 @@ public class ConnectivityService extends IConnectivityManager.Stub {
return result.toArray(new NetworkState[result.size()]); return result.toArray(new NetworkState[result.size()]);
} }
private NetworkState getNetworkStateUnchecked(int networkType) {
if (isNetworkTypeValid(networkType)) {
final NetworkStateTracker tracker = mNetTrackers[networkType];
if (tracker != null) {
return new NetworkState(tracker.getNetworkInfo(), tracker.getLinkProperties(),
tracker.getLinkCapabilities());
}
}
return null;
}
@Override
public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
enforceAccessPermission();
final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
if (state != null) {
try {
return mPolicyManager.getNetworkQuotaInfo(state);
} catch (RemoteException e) {
}
}
return null;
}
public boolean setRadios(boolean turnOn) { public boolean setRadios(boolean turnOn) {
boolean result = true; boolean result = true;
enforceChangePermission(); enforceChangePermission();