L'une des fonctions de mon application envoie des données sur l'internet. Avant de tenter d'envoyer les données, je vérifie si une connexion existe :
private boolean isConnected() {
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State val1 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
NetworkInfo.State val2 = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
return NetworkInfo.State.CONNECTED.equals(val1) || NetworkInfo.State.CONNECTED.equals(val2);
}
Cela a parfaitement fonctionné sur l'émulateur et sur quelques appareils réels que j'ai testés. J'ai ensuite reçu un rapport d'erreur du client, qui, après enquête, s'est avéré être une erreur de type NullPointerException
en getState
ligne pour TYPE_MOBILE
.
Apparemment, connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
retourné null
sur l'appareil qui ne disposait pas de la 3G (une tablette Wi-Fi uniquement). Bien que j'aie testé sur un émulateur Nexus 7, je n'ai pas obtenu cette erreur.
Par conséquent, ce qui m'intéresse, c'est de créer un AVD qui n'a explicitement pas de 3G (c'est-à-dire un AVD pour un appareil WiFi-only) afin que je puisse étudier/tester de tels scénarios. Je n'ai rien trouvé dans les options de l'émulateur, mais peut-être que je cherche au mauvais endroit. Est-ce que c'est possible ?