Je veux vérifier si Un périphérique particulier a un support matériel pour les réseaux 4G forts>. p>
Je vais élaborer le problème ... Il y a des préférences à cocher pour tous les réseaux WIFI, 2G, 3G 4G, etc.
Maintenant, si l'appareil ne dispose pas de la prise en charge du réseau 4G, je souhaite cacher la case à cocher la sélection 4G.
Dans l'application, nous avons une page de paramètres où l'utilisateur peut effectuer une sélection et permettre une application uniquement dans des réseaux sélectionnés.
Par exemple. L'utilisateur peut sélectionner cette application ne fonctionnera que dans le réseau WiFi ou uniquement dans le réseau 3G, etc. P>
Toutes les fonctionnalités restantes sont complètes. Je suis frappé sur cette question que sur la manière de détecter si le dispositif prend en charge 4G ou pas?
Veuillez noter que
Toute aide est grandement appréciée. P>
3 Réponses :
Cela pourrait fonctionner. Il devrait vérifier pour WiMAX 4G:
private boolean is4gavailable() { ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobileInfo = connec.getNetworkInfo(0); NetworkInfo wifiInfo = connec.getNetworkInfo(1); NetworkInfo wimaxInfo = connec.getNetworkInfo(6); if (wimaxInfo!=null) { return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting() || wimaxInfo.isConnectedOrConnecting(); } else { return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting(); } }
Bonjour Nick, merci pour la réponse. Mais je ne pense pas que cela résout mon problème. Je tiens à détecter s'il existe un matériel pour 4G présent dans l'appareil. I.e. L'appareil a-t-il une capacité de 4g? Je ne veux pas savoir si la connexion 4G est connectée ou non. Cette partie que j'ai déjà fait.
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info = cm.getAllNetworkInfo(); for(int i=0; i <info.length; i++){ Log.i("netinfo"+i, info[i].getType()+""); Log.i("netinfo"+i, info[i].getTypeName()); Log.i("netinfo"+i, info[i].getSubtype()+""); Log.i("netinfo"+i, info[i].getSubtypeName()); } Use this piece of code and get all available options on the device. I think you should be able to get all capabilities of the device.and network type info is present in http://developer.android.com/reference/android/telephony/TelephonyManager.html.I think network types added from API level 11 are for 4g. Check it yourself.
Ne fonctionne pas, cela vous donne également les types de réseau actuellement actifs et non les capacités matérielles. Changer le type de réseau préféré dans les paramètres de 2G ou 3G donne des résultats différents.
De la documentation de Google La méthode GetallNetworkInfo du gestionnaire de connectivité devient obsolète au niveau de l'API 23 et il est recommandé d'utiliser GetallNetworks et GetNetworkInfo par la suite. Encore une fois, GetallNetworks est disponible uniquement pour l'API Niveau 21+
@ballzak Avez-vous eu une solution?
Context context = MainActivity.this; public synchronized static boolean isNetAvailable(Context context){ boolean isNetAvailable=false; if ( context != null ){ ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if ( mgr != null ) { boolean mobileNetwork = false; boolean wifiNetwork = false; boolean wiMaxNetwork = false; boolean mobileNetworkConnecetd = false; boolean wifiNetworkConnecetd = false; boolean wiMaxNetworkConnected = false; NetworkInfo mobileInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo wiMaxInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX); if ( mobileInfo != null ) mobileNetwork = mobileInfo.isAvailable(); if ( wifiInfo != null ) wifiNetwork = wifiInfo.isAvailable(); if(wiMaxInfo != null) wiMaxNetwork = wiMaxInfo.isAvailable(); if(wifiNetwork == true || mobileNetwork == true || wiMaxNetwork == true){ mobileNetworkConnecetd = mobileInfo.isConnectedOrConnecting(); wifiNetworkConnecetd = wifiInfo.isConnectedOrConnecting(); wiMaxNetworkConnected = wiMaxInfo.isConnectedOrConnecting(); } isNetAvailable = ( mobileNetworkConnecetd || wifiNetworkConnecetd || wiMaxNetworkConnected ); } } return isNetAvailable; } Check for value of isNetAvailable is true in all the 3 cases this works for me, wish work for u tooNote : 4G availability will be introduces API level 8 onwards.
Avez-vous eu une solution?