Maison > Java > javaDidacticiel > Comment puis-je détecter de manière fiable les changements de connectivité Internet dans mon application Android à l'aide de récepteurs de diffusion ?

Comment puis-je détecter de manière fiable les changements de connectivité Internet dans mon application Android à l'aide de récepteurs de diffusion ?

Patricia Arquette
Libérer: 2024-12-20 10:41:09
original
350 Les gens l'ont consulté

How Can I Reliably Detect Internet Connectivity Changes in My Android App Using Broadcast Receivers?

Récepteur de diffusion pour vérifier la connexion Internet dans l'application Android

Dans les applications Android, les récepteurs de diffusion sont utilisés pour surveiller les changements dans le système ou des événements spécifiques. L’un de ces cas d’utilisation courants consiste à vérifier la connectivité Internet. Cependant, dans certains scénarios, il peut être souhaitable de limiter l'invocation du récepteur aux instances où une connexion réseau est disponible.

Problème : invocations de récepteur de diffusion en double

Un défi courant rencontré est que le récepteur est appelé deux fois, même si le réseau n'est pas disponible. Cela peut être attribué à l'ajout de plusieurs filtres d'intention dans la déclaration manifeste du destinataire. Pour résoudre ce problème, il suffit d'utiliser une seule action pour les modifications de connectivité réseau, telle que :

<intent-filter>
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
Copier après la connexion

Vérification de la disponibilité Internet

Pour répondre à la deuxième préoccupation, où le récepteur doit ne se déclenche que lorsqu'une connexion réseau est disponible, le code fourni remplit effectivement cette exigence. Il surveille la disponibilité du réseau Wi-Fi et du réseau mobile et avertit uniquement si l'un d'eux est connecté.

Remarque supplémentaire

Pour une approche plus simple de la vérification de la connectivité Internet, envisagez la fonction suivante :

public boolean isOnline(Context context) {

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    //should check for null as it will be null in airplane mode
    return (netInfo != null && netInfo.isConnected());
}
Copier après la connexion

Cette méthode fournit un moyen concis de déterminer si un appareil mobile est connecté à un réseau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal