J'utilise le code ci-dessous pour activer/désactiver le réseau mobile.Activer/désactiver la connexion réseau mobile par programme dans android jelly bean
final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, ON);
J'ai testé ce code avec Android 2.3.X, 4.0.X et 4.1.X. Il fonctionne avec seulement 2.3.X et 4.0.X mais a échoué avec 4.1.X.
Je reçois l'exception java.lang.NoSuchFieldException: mService
lors d'un test avec Android Jelly Bean.
Existe-t-il une autre solution à mon problème? J'ai ajouté toutes les autorisations requises dans le fichier manifeste.
Votre téléphone n'a-t-il pas besoin d'être enraciné pour cela? –
Je ne sais pas si vous avez besoin d'autres réseaux ou si vous voulez travailler en mode non connecté, mais avez-vous pensé au mode avion? – lithos35