10
votes

Android, NetworkInfo.getTyPename (), NullpointerException

J'ai une activité qui montre des entrées de liste. Lorsque je clique sur un élément de liste Mes vérins de l'application, quel type de connexion est disponible ("WIF" ou "Mobile"), via NetworkInfo.getTyPename (). Dès que j'appelle cette méthode, je reçois une nullpointerException. Pourquoi?

J'ai testé cela sur l'émulateur, car mon téléphone n'est actuellement pas disponible (c'est cassé ...). Je suppose que c'est le problème? C'est la seule explication que j'ai, si ce n'est pas le cas, je n'ai aucune idée de la raison pour laquelle cela serait null. P>

Voici un extrait de code: p>

public class VideoList extends ListActivity{
 ...
 public void onCreate(Bundle bundle){
  final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  ...
  listview.setOnItemClickListener(new OnItemClickListener(){
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    ...
    NetworkInfo ni = cm.getActiveNetworkInfo();
    String connex = ni.getTypeName(); //Nullpointer exception here
    if(connex.equals("WIFI")doSomething();
   }
  });
 }
}


0 commentaires

4 Réponses :


10
votes

L'appel getactOnsetWorkInfo () code> peut renvoyer null s'il n'y a pas de réseau actif et vous devez vérifier cela. Voici le code source de Ici .

/**
 * Return NetworkInfo for the active (i.e., connected) network interface.
 * It is assumed that at most one network is active at a time. If more
 * than one is active, it is indeterminate which will be returned.
 * @return the info for the active network, or {@code null} if none is active
 */
public NetworkInfo getActiveNetworkInfo() {
    enforceAccessPermission();
    for (NetworkStateTracker t : mNetTrackers) {
        NetworkInfo info = t.getNetworkInfo();
        if (info.isConnected()) {
            return info;
        }
    }
    return null;
}


0 commentaires

2
votes

Je comprends que vous avez une connexion et que l'émulateur est capable de l'utiliser, mais alors l'appel à GetackokeNetworkinfo () vous retourne de toute façon, et c'est pourquoi vous êtes perplexe.

Eh bien, vos suspicions ont eu raison: getAltOnteTworkInfo () ne fonctionne pas sur l'émulateur et retourne toujours NULL.


0 commentaires

2
votes

J'ai trouvé que si vous appuyez sur F8 pour activer la 3G sur l'émulateur, cm.getackokeTeworkInfo () renvoie ensuite une poignée NetworkInfo utilisable non null.


0 commentaires

-1
votes

au lieu de xxx

essayez xxx


1 commentaires

Ne faites jamais que les conditions Yoda s'il vous plaît ... je préfère préférer si (Connex! = Null && Connext.equals ("wifi"))