Comment activer/désactiver le gps et les données mobiles android par programmation?

Je veux que mon application pour être en mesure d'activer/de désactiver le gps et mobiles de données par programmation comme il existe de nombreuses applications comme tasker, le profil d'écoulement, lookout supplémentaire qui peut faire cela, donc j'ai cherché, mais pas trouvé de bon exemple, j'ai trouvé le code suivant, mais ils n'ont pas de travail.

private void setMobileDataEnabled(Context context, boolean enabled) {
 final ConnectivityManager conman = (ConnectivityManager) context.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, enabled);
} 

private void turnGPSOn(){
 String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

 if(!provider.contains("gps")){ //if gps is disabled
    final Intent poke = new Intent();
    poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
 }
}

private void turnGPSOff(){
 String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

 if(provider.contains("gps")){ //if gps is enabled
    final Intent poke = new Intent();
    poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
 }
} 
Quelle version d'android utilisez-vous pour les tests?
android 2.3 et 4.1.2
Essayez le code ci-dessous, laissez-moi savoir si cela a fonctionné.
son genre de travail merci mais ce qu'il est en train de faire est de tourner sur le service, donc si vous avez commencé à partir de mon application, une icône apparaît en haut de la barre d'état et il est à la recherche pour gps......et même si je l'ai désactiver manuellement ou à partir de l'application, elle ne veut pas aller à partir de là et sur android 4.1.2, il n'a pas allumé le gps l'icône dans la barre d'état, mais il a commencé le service, mais dans android 2.3, il se tourna sur l'icône et aussi a commencé le service
Oubliez le GPS... avez-vous été en mesure de désactiver les données mobiles au moins? Si oui, comment... le code (autres que pour le GPS)? Veuillez également mentionner d'autres changements nécessaires comme les espaces de noms etc....

OriginalL'auteur Taimur Ayaz | 2013-05-25