7
votes

Comment vérifier si "les données mobiles" android est sur

Je veux que mon application vérifie si "le mode Network de données" ou "Données mobiles" est activé, même s'il n'est pas actif actuellement. En d'autres termes, je dois vérifier si l'application encouragera potentiellement des frais de données mobiles, même si le téléphone est actuellement connecté via WiFi.

Par googling j'ai trouvé le code suivant qui vérifie si "Données mobiles" est "active". xxx

Le problème avec ce code est que si wifi est actif le problème Les données mobiles ne sont pas signalées comme actives, même si elle est commutée sur ON.

peut être modifié pour déterminer si les données mobiles sont "activées" et donc potentiellement actives, plutôt que comme avec ce code s'il est le mode de connexion actuellement actif?


3 commentaires

4 Réponses :


2
votes

Essayez ceci xxx


1 commentaires

Merci pour la suggestion; Cependant, ce code renvoie true si WiFi ou une connexion de données mobiles est disponible. J'essaie de détecter spécifiquement si les données mobiles sont activées (indépendamment de la connexion WiFi).



0
votes

Veuillez regarder ce code: (Code d'une de mes applications publiées sur le Play Store)

private static boolean isAPNEnabled(Context paramContext) {
    try {
        NetworkInfo networkInfo = ((ConnectivityManager) paramContext.getSystemService("connectivity")).getActiveNetworkInfo();
        return networkInfo.isConnected();
    } catch (Exception e) {
        return false;
    }
}


1 commentaires

Merci pour la suggestion; Cependant, ce code renvoie true si WiFi ou une connexion de données mobiles est disponible. J'essaie de détecter spécifiquement si les données mobiles sont activées (indépendamment de la connexion WiFi).



3
votes

Essayez ceci, cela fonctionne dans la plupart des cas.

ConnectivityManager cm =
                (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        boolean isConnected = activeNetwork != null &&
                activeNetwork.isConnected();

        if (!isConnected)
        {
            return false;
        }


1 commentaires

Remarque: getnetworkinfo () est obsolète depuis l'API 23.



1
votes

Je ne suis pas sûr que cela fonctionnera sur tous les appareils, mais cela fonctionne sur certains que j'ai essayé: xxx

Il semble renvoyer le résultat correct même si j'ai un wifi actif connexion.


0 commentaires