Comment faire pour désactiver la connexion GSM sous Android par programmation
Je veux activer/désactiver un téléphone Android de la connexion GSM. J'ai besoin de désactiver/activer les appels et SMS en tant que de besoin. Comment pourrais-je faire cela?
EDIT: Cette solution sera également désactiver le wifi, le bluetooth, etc...
Si vous souhaitez désactiver la radio seulement, je pense que c'est lié à cette question: http://code.google.com/p/android/issues/detail?id=1065
Je suis vraiment pessimiste au sujet de trouver une bonne solution, mais curieux de voir d'autres réponses.
//Toggle airplane mode.Settings.System.putInt(
context.getContentResolver(),Settings.System.AIRPLANE_MODE_ON, isEnabled ?0:1);//Post an intent to reload.Intent intent =newIntent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state",!isEnabled);
sendBroadcast(intent);
où isEnabled est de savoir si le mode avion est activé ou non.
N'oubliez pas que vous devez le WRITE_SETTINGS la permission de le faire, cependant.
+1 bonne solution Si vous changez de téléphone en mode Avion, vous devrez également supprimer une connexion wi-fi et bluetooth. Je ne pense pas que c'est ce qui est attendu. La tâche principale a été de supprimer uniquement de connexion GSM... oui.j'ai déjà essayé avec airplanemode. Qui permet de désactiver bluetooth aussi.mais je veux désactiver uniquement appel et sms est-ce possible?????j'ai désactivé le GPRS. Existe t'il une méthode est disponible???? Désolé, vous avez entièrement raison. Je ne pense pas qu'il y est une "bonne" solution, voir code.google.com/p/android/issues/detail?id=1065, mais si vous avez des smart utilisateurs, vous pouvez configurer le menu (de type #*#INFO#*# (#*#4636#*#) dans le dialer). D'éditer ma réponse
/* Toggle airplane mode for 1 of the 4 allowed types
* type allowed values: cell, wifi, bluetooth, nfc
*/privatevoid changeRadioComponentEnabled(Context context,String type,boolean radio_component_enabled,boolean reset){//now toggle airplane mode from on to off, or vice versaSettings.System.putInt(context.getContentResolver(),Settings.System.AIRPLANE_MODE_ON, radio_component_enabled ?0:1);//now change system behavior so that only one component is turned off//this also affects the future behavior of the system button for toggling air-plane mode. //to reset it in order to maintain the system behavior, set reset to true, otherwise we lazily make sure mobile voice is always onSettings.System.putString(context.getContentResolver(),Settings.System.AIRPLANE_MODE_RADIOS, type);//post an intent to reload so the menu button switches to the new state we setIntent intent =newIntent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", radio_component_enabled ?false:true);
context.sendBroadcast(intent);//revert to default system behavior or notif(reset){Settings.System.putString(context.getContentResolver(),Settings.System.AIRPLANE_MODE_RADIOS,"cell,bluetooth,wifi,nfc");}//if reset to default is not chosen, always enable mobile cell at least//but only if NOT changing the mobile connection...elseif(type.indexOf("cell")==0){Settings.System.putString(context.getContentResolver(),Settings.System.AIRPLANE_MODE_RADIOS,"cell");}}//end method
naturellement, ce besoin de l'autorisation android.permission.WRITE_SETTINGS, et pour bluetooth android.permission.BLUETOOTH_ADMIN. Pour le NFC, vous pourriez avoir besoin android.permission.NFC.
MODIFICATIONS: fortement modifiée depuis l'origine, depuis que je suis en train d'utiliser ce d'une manière différente dans mon propre application
Mon téléphone a également wimax dans les Paramètres.Système.AIRPLANE_MODE_RADIOS: "de la cellule,le bluetooth,le wifi,le nfc,la technologie wimax" . C'est surprenant, parce que ce téléphone ne prend pas en charge la 4G WiMax!
EDIT: Cette solution sera également désactiver le wifi, le bluetooth, etc...
Si vous souhaitez désactiver la radio seulement, je pense que c'est lié à cette question: http://code.google.com/p/android/issues/detail?id=1065
Je suis vraiment pessimiste au sujet de trouver une bonne solution, mais curieux de voir d'autres réponses.
Voir l'article du blog de Android: Le Contrôle En Mode Avion ,
où
isEnabled
est de savoir si le mode avion est activé ou non.N'oubliez pas que vous devez le WRITE_SETTINGS la permission de le faire, cependant.
Si vous changez de téléphone en mode Avion, vous devrez également supprimer une connexion wi-fi et bluetooth. Je ne pense pas que c'est ce qui est attendu. La tâche principale a été de supprimer uniquement de connexion GSM...
oui.j'ai déjà essayé avec airplanemode. Qui permet de désactiver bluetooth aussi.mais je veux désactiver uniquement appel et sms est-ce possible?????j'ai désactivé le GPRS. Existe t'il une méthode est disponible????
Désolé, vous avez entièrement raison. Je ne pense pas qu'il y est une "bonne" solution, voir code.google.com/p/android/issues/detail?id=1065, mais si vous avez des smart utilisateurs, vous pouvez configurer le menu (de type #*#INFO#*# (#*#4636#*#) dans le dialer). D'éditer ma réponse
OriginalL'auteur Waza_Be
naturellement, ce besoin de l'autorisation
android.permission.WRITE_SETTINGS
, et pour bluetoothandroid.permission.BLUETOOTH_ADMIN
. Pour le NFC, vous pourriez avoir besoinandroid.permission.NFC
.MODIFICATIONS: fortement modifiée depuis l'origine, depuis que je suis en train d'utiliser ce d'une manière différente dans mon propre application
OriginalL'auteur slinden77