5 votes

Comment activer (et non seulement activer ou désactiver) les données mobiles et le wifi en utilisant adb ?

Première question principale :

est-il possible d'activer ou de désactiver l'état des données mobiles et du wifi en utilisant adb ? (par exemple pour le wifi : si vous ne connaissez pas l'état du wifi maintenant. vous envoyez plusieurs commandes et ensuite vous êtes sûr que l'état du wifi a changé). si ce n'est pas possible alors la question est comment connaître l'état du wifi et des données mobiles en utilisant adb ?

deuxième :

est-il possible de changer l'état du wifi-hotspot et du modem usb via abd ?

ce que je peux faire :

J'utilise

adb shell svc data enable/disable
adb shell svc wifi enable/disable

Pour activer/désactiver le wifi et les données mobiles. Mais je ne connais pas de moyen de changer l'état avec une commande comme "adb shell svc data toggle". Peut-être existe-t-il une commande qui renvoie l'état du Wi-Fi ou des données mobiles ? Comme adb shell svc data state . et il renvoie "on" ou "off". Y a-t-il un moyen de l'activer lorsque le téléphone est verrouillé ?

J'utilise aussi ces commandes pour changer le wifi-hotspot et le modem usb. (contrairement aux deux premières commandes ci-dessus, l'écran peut être éteint, mais le téléphone doit être déverrouillé) :

adb shell am start -n com.android.settings/.TetherSettings
adb shell input keyevent 20
adb shell input keyevent 20
adb shell input keyevent 20
adb shell input keyevent 66

la première ligne ouvre la page des paramètres. keyevent 20 - simule la pression d'une touche down , keyevent 66 - enter . c'est pour le modem usb. pour le wifi-hotspot j'utilise la même première ligne, key20 key66 key20 key66.

J'ai un Samsung A50 (Android 10) et Ubuntu 20. Le script bash de changement d'état du modem est situé dans /usr/local/bin, je peux donc le lancer depuis la console en écrivant simplement le nom du fichier.

5voto

NikolayFR Points 71

obtenir l'état :

adb shell settings get global airplane_mode_on
# 0|1 -  dis/en abled

adb shell settings get global mobile_data
# 0|1 - dis/en abled

adb shell settings get global wifi_on
# 0|1 - dis/en abled

adb shell settings get global bluetooth_on
# 2|1 - dis/en abled

adb shell settings get global cell_on
# 2|1 - dis/en abled

changer d'état :

airplane
  enable
    adb shell settings put global airplane_mode_on 1
    adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
  disable
    adb shell settings put global airplane_mode_on 0
    adb shell am broadcast -a android.intent.action.AIRPLANE_MODE

mobile data
    adb shell svc data enable
    adb shell svc data disable

wifi
    adb shell svc wifi enable
    adb shell svc wifi disable

bluetooth
  eanable
    adb shell settings put global bluetooth_disabled_profiles 1
  disable 
    adb shell settings put global bluetooth_disabled_profiles 0

pour basculer utiliser un script bash qui vérifie l'état et ensuite allume/éteint comme :

#!/bin/bash
function toggle_data {
    if [[ $(adb shell settings get global mobile_data) == "1" ]]; then
        adb shell svc data disable
    else
        adb shell svc data enable; fi
}
function toggle_wifi {
    if [[ $(adb shell settings get global wifi_on) == "1" ]]; then
        adb shell svc wifi disable
    else
        adb shell svc wifi enable; fi
}
toggle_wifi
toggle_data
exit 0;

3voto

Firelord Points 23064

En connaissant le état Je suppose que vous vouliez dire si, à un moment donné, le Wi-Fi ou les données mobiles sont activés ou désactivés. Cette information peut être obtenue à partir de la décharge de connectivité service.

Exécutez cette commande pour obtenir l'état des données mobiles et du Wi-Fi :

adb shell dumpsys connectivity | sed -e '/[0-9] NetworkAgentInfo.*CONNECTED/p' -e '/Tether state:/,/Hardware offload:/p' -n

Exemple de sortie :

  1 NetworkAgentInfo \[**WIFI** () - 178\] CONNECTED/CONNECTED
  5 NetworkAgentInfo \[**MOBILE** (LTE) - 191\] CONNECTED/CONNECTED
Tether state:
  **rndis**0 - **TetheredState** - lastError = 0
  **wlan**0 - AvailableState - lastError = 0
  Upstream wanted: true
  Current upstream interface(s): \[rmnet\_data1\]
Hardware offload:

Ici :

  • WIFI est connecté à un réseau Wi-FI
  • MOBILE signifie que les données mobiles sont activées
  • rndis est le nom de l'interface du tethering USB
  • wlan est le nom de l'interface du point d'accès Wi-Fi
  • TetheredState signifie que l'attachement pour l'interface respective est activé

Dans votre sortie :

  • si WIFI terme avec CONNECTED est absent, que l'appareil n'est pas connecté à un réseau Wi-FI.
  • si MOBILE terme avec CONNECTED est absent, que le dispositif mobile est désactivé
  • si TetheredState est affiché pour rndis ou wlan ou les deux, que respectivement, cela signifie que le tethering USB et le hotspot Wi-Fi est/sont activés.

A vérifier si la radio Wi-Fi est activée ou désactivée exécutez cette commande :

adb shell dumpsys wifi | sed -n 1p

Exemple de sortie si le Wi-Fi est activé :

Wi-Fi is **enabled**

enabled montrerait que disabled si la radio Wi-Fi est désactivée.


De même, pour vérifier si la radio cellulaire a accès au réseau de télécommunication ou s'il est désactivé, exécutez cette commande :

adb shell dumpsys telephony.registry | grep mServiceState | grep -o "mDataRegState=\[()0-9A-Z\_\]\*"

Exemple de sortie :

mDataRegState=0(**IN\_SERVICE**)
mDataRegState=0(**IN\_SERVICE**)

Ici :

  • IN_SERVICE signifie que votre ou vos radios cellulaires (si plusieurs cartes SIM sont prises en charge) sont connectées à un réseau.
  • OUT_OF_SERVICE signifierait qu'il n'est pas connecté au réseau de télécommunication.
  • POWER_OFF signifie que l'appareil est en mode avion.

En combinant toutes ces informations, vous serez en mesure de vous assurer que tout est en ordre :

  • l'état de la radio Wi-Fi et de sa connectivité
  • l'état de la radio cellulaire et sa connectivité internet
  • l'état des connexions USB et Wi-Fi

Maintenant, vous savez déjà comment activer/désactiver les données mobiles, le tethering USB et le Wi-Fi à l'aide de la fonction svc utilitaire. Bien que je ne sache pas comment facilement activer le hotspot, désactiver le hotspot est assez facile. D'abord, activez le Wi-Fi en utilisant svc, puis désactivez-le avec svc aussi.

Les deux commandes susmentionnées devraient suffire pour vérifier l'état de connexion des données mobiles, du Wi-Fi, du Wi-Fi hotspot et du tethering USB.

Note : Cette solution a été testée sur un OnePlus 6 fonctionnant sous Android 10.

2voto

St0rm Points 656

Données mobiles :

adb shell settings get global mobile_data 
adb shell settings get global mobile_data_always_on

Wifi :

adb shell settings get global wifi_on

Mode avion :

adb shell settings get global airplane_mode_on

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X