Android L (5.x) Activer/DÉSACTIVER “Données Mobiles” par programmation
J'ai besoin d'Activer/DÉSACTIVER les données Mobiles par programmation. Ci-dessous le code n'est pas du travail de 5.x. Pouvez-vous s'il vous plaît aider moi. Merci à l'avance.
private void setMobileDataEnabled(Context context, boolean enabled) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field connectivityManagerField = conmanClass.getDeclaredField("mService");
connectivityManagerField.setAccessible(true);
final Object connectivityManager = connectivityManagerField.get(conman);
final Class connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(connectivityManager, enabled); }
03-30 12:42:29.466: W/Système.err(5966):
java.lang.NoSuchMethodException: setMobileDataEnabled [boolean] 03-30
12:42:29.466: W/Système.err(5966):
java.lang.Classe.getMethod(de la Classe.java:664) 03-30 12:42:29.466:
W/Système.err(5966):
java.lang.Classe.getDeclaredMethod(de la Classe.java:626)
java.lang.NoSuchMethodException: setMobileDataEnabled [boolean] @ en dessous de la ligne.
Méthode finale setMobileDataEnabledMethod =
connectivityManagerClass.getDeclaredMethod("setMobileDataEnabled",
Boolean.TYPE);
Veuillez vérifier les mises à jour question.
double possible de Le setMobileDataEnabled méthode n'est plus remboursable à partir de Android L et plus tard
Merci, Sa utile
OriginalL'auteur Ganesh AB - Android | 2015-03-30
Vous devez vous connecter pour publier un commentaire.
Lors de l'exécution du code, vous obtenez une SecurityException indiquant que Ni l'utilisateur 10089 ni processus actuel a android.la permission.MODIFY_PHONE_STATE.
Une autorisation MODIFY_PHONE_STATE doit être ajouté
J'ai obtenu ce à partir de Réponse
Merci Muzikant
Oui, notre application devrait être un système d'application..
Vous avez besoin d'un accès root pour que. donc, pour l'utilisateur apps ce n'est pas possible. Merci.
Les applications tierces ne sont pas autorisés à utiliser cette autorisation.
OriginalL'auteur Kushal
Dans Android L 5.xx cachés API setMobileDataEnabled méthode est supprimé et il ne peut plus être utilisé. Vous pouvez le vérifier sur android lolipop code source sous /frameworks/base/core/java/android/net/ConnectivityManager.java.
Si vous insistez toujours pour l'accomplir, vous pouvez utiliser l'extrait de code de réponse par Kushal mais getDataEnabled est un système d'api, normal les applications de l'utilisateur ne peut pas accéder. Il y a encore un système d'api disponible setDataEnabled sous TelephonyManager. (/frameworks/base/telephony/java/android/telephony/TelephonyManager.java)
Il a aussi besoin de la permission "d'android.la permission.MODIFY_PHONE_STATE" qui fonctionne uniquement sur les appareils enracinées.
Cannot resolve method getDefaultDataSubId
erreurComment avez-vous utilisé l'api? J'espère que vous savez comment accéder à un caché de l'api.
J'ai vu que récemment (après une certaine version) Google a rendu l'accès aux personnes cachées méthodes n'est plus possible.
Il est possible d'accéder caché méthodes, pour cela, vous devez modifier le android.jar que vous utilisez pour la compilation, le retrait de la @cacher.
OriginalL'auteur Arun Sivaramakrishnan S