Resuelva el problema del abandono de NetworkInfo en android10 (API 29)

En API 29, NetworkInfo está marcado como obsoleto.
En el pasado, usábamos NetworkInfo para determinar si la red está conectada o no y determinar el tipo de red, luego en Android 10 podemos usar NetworkCapabilities en su lugar

public class netWorkChangeReceiver extends BroadcastReceiver {
    
    
    @Override
    public void onReceive(Context context, Intent intent) {
    
    
       ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        Network network = connectivityManager.getActiveNetwork();
        if(network == null){
    
    
            Toast.makeText(context,"unavailable",Toast.LENGTH_LONG).show();
        }
        else{
    
    
            NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
            assert networkCapabilities != null;
            if(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
    
    
                Toast.makeText(context,"Cellular",Toast.LENGTH_LONG).show();
            }
            if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
    
    
                Toast.makeText(context,"WIFI",Toast.LENGTH_LONG).show();
            }
        }

    }
}

Dado que getActiveNetwork requiere api> 23, es mejor agregar el juicio de la versión de api al usarlo y usar NetworkInfo para aquellos por debajo de 23.

Supongo que te gusta

Origin blog.csdn.net/Mr_nuts/article/details/115031075
Recomendado
Clasificación