diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index d127ca8bbf..1cfe419b78 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -126,6 +126,17 @@ public class ConnectivityManager public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"; + + /** + * Broadcast Action: The network connection may not be good + * uses {@code ConnectivityManager.EXTRA_INET_CONDITION} and + * {@code ConnectivityManager.EXTRA_NETWORK_INFO} to specify + * the network and it's condition. + * @hide + */ + public static final String INET_CONDITION_ACTION = + "android.net.conn.INET_CONDITION_ACTION"; + /** * Broadcast Action: A tetherable connection has come or gone * TODO - finish the doc diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 72e7435db6..715b7e7a86 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -1039,7 +1039,15 @@ public class ConnectivityService extends IConnectivityManager.Stub { } private void sendConnectedBroadcast(NetworkInfo info) { - Intent intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION); + sendGeneralBroadcast(info, ConnectivityManager.CONNECTIVITY_ACTION); + } + + private void sendInetConditionBroadcast(NetworkInfo info) { + sendGeneralBroadcast(info, ConnectivityManager.INET_CONDITION_ACTION); + } + + private void sendGeneralBroadcast(NetworkInfo info, String bcastType) { + Intent intent = new Intent(bcastType); intent.putExtra(ConnectivityManager.EXTRA_NETWORK_INFO, info); if (info.isFailover()) { intent.putExtra(ConnectivityManager.EXTRA_IS_FAILOVER, true); @@ -1543,7 +1551,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { break; } mDefaultInetConditionPublished = mDefaultInetCondition; - sendConnectedBroadcast(networkInfo); + sendInetConditionBroadcast(networkInfo); break; } }