La API de Connectivity Diagnostics permite que las apps que tienen o administran redes, como las de operadores, de VPN y de sugerencias de Wi-Fi, reciban información de diagnóstico de conectividad de red del framework. Estas apps pueden registrar devoluciones de llamada y recibir notificaciones con información de conectividad para las redes que poseen o administran. Las apps no recibirán notificaciones de redes que no sean propiedad de la app ni estén administradas por ella.
Estos son algunos ejemplos de apps que administran o poseen redes:
- Apps de operadores: Administran las redes móviles para las que su 
subIdtiene privilegios de operador. - Apps de sugerencias de Wi-Fi: Son propietarias de las redes Wi-Fi que sugieren al sistema.
 - Apps de VPN: Administran todas las redes que usa su VPN, pero solo cuando son la VPN activa.
 
Las devoluciones de llamada se invocan en los siguientes casos:
Validación de red: El sistema terminó de evaluar una red específica. La clase
ConnectivityReportproporciona información sobre el estado actual de la red y los resultados de las pruebas o los procedimientos que se realizaron como parte de la validación.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }Se sospecha una detención de datos: Se sospecha una detención de datos, una condición en la que los paquetes IP no fluyen correctamente a través de la red. La clase
DataStallReportproporciona información sobre las posibles detenciones de datos.public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }Conectividad informada: Una app informó conectividad a través de
ConnectivityManager#reportNetworkConnectivityal sistema. Se comparte la red y la conectividad informada (si la app cree que la red proporciona o no conectividad).
Implementación
Para usar la API de Connectivity Diagnostics, una app debe obtener una instancia de ConnectivityDiagnosticsManager de la plataforma. Esta instancia se debe usar para registrar y cancelar el registro de las implementaciones de ConnectivityDiagnosticsCallback. Los métodos de devolución de llamada que no se anulan son no-ops.
A continuación, se muestra un ejemplo de implementación de ConnectivityDiagnosticsCallback:
public class ExampleCallback extends ConnectivityDiagnosticsCallback {
    @Override
    public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
    @Override
    public void onDataStallSuspected(@NonNull DataStallReport report) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
    @Override
    public void onNetworkConnectivityReported(
               @NonNull Network network, boolean hasConnectivity) {
        ... 
        // Log data, take action based on report result, etc
        ... 
    }
}
Para registrar devoluciones de llamada y recibir notificaciones, llama a registerConnectivityDiagnosticsCallback.
Para anular el registro de las devoluciones de llamada y dejar de recibir notificaciones, llama a unregisterConnectivityDiagnosticsCallback.
A continuación, se muestra un ejemplo para registrar y cancelar el registro de ConnectivityDiagnosticsCallback:
NetworkRequest request =
        new NetworkRequest.Builder()
                .addTransportType(TRANSPORT_CELLULAR)
                .build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();
ConnectivityDiagnosticsManager cdm =
        context.getSystemService(ConnectivityDiagnosticsManager.class);
ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
        request, executor, callback);
... 
// Collect connectivity information on networks that match with request
... 
cdm.unregisterConnectivityDiagnosticsCallback(callback);
Validación
La API de Connectivity Diagnostics se prueba con el CTS de ConnectivityDiagnosticsManagerTest.