2012-04-05 65 views
43

即時通訊自動化測試程序的WiFi呼叫,我想知道有沒有辦法通過adb關閉/開啓WiFi?如何通過ADB關閉Wifi?

我想要禁用/啓用wifi或殺死wifi調用(com.movi​​al.wificall)並重新啓動它。

是否有可能通過adb和shell命令完成此操作?

到目前爲止,我還發現:

android.net.wifi.WifiManager 
setWifiEnabled(true/false) 

我只是不知道如何把它一起

回答

81

使用 「SVC」 通過ADB(根植要求):

啓用:

adb shell su -c 'svc wifi enable' 

禁用:

adb shell su -c 'svc wifi disable' 

亞行採用關鍵事件:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings 
adb shell input keyevent 20 & adb shell input keyevent 23 

第一行推出 「wifi.WifiSettings」 活動,其打開WiFi設置頁面。第二行模擬按鍵。

我在Droid X上測試了這兩行代碼,但上面的關鍵事件可能需要在其他設備中編輯,因爲不同的設置佈局。

更多關於「keyevents」的信息here

+1

非常感謝你的帖子。它在我的手機上並不完全一樣,但自從發佈輸入事件後,我發現它是關鍵事件19和23.再次感謝。 :) – Nefariis 2012-04-10 15:56:00

+1

好吧,你知道了嗎?是的,我測試了一個Droid X,我不確定你有什麼電話:) – 2012-04-10 16:21:51

+0

在我看來,Berkk的答案要好得多(特別是少一些)。 – karni 2013-04-11 19:44:36

37

我正在尋找同樣打開藍牙開/關,我發現這一點:

adb shell svc wifi enable|disable 
+2

我試過在6種不同的設備上使用這段代碼,從薑餅到果凍豆,根植於無根,我無法讓它在任何一種設備上工作。什麼設備可以讓這個工作? – Nefariis 2012-09-11 21:44:05

+6

@Nefarii - 爲此我需要請求adb外殼進入設備.....然後請求su權限....然後我能夠正確運行這些命令。 – dell116 2012-10-18 20:47:20

+2

確保您擁有root權限才能使用。 – muslidrikk 2013-02-05 11:12:11

22

簡單的方式開啓無根設備的WiFi是使用簡單的應用程序:

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     WifiManager wfm = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     try { 
      wfm.setWifiEnabled(Boolean.parseBoolean(getIntent().getStringExtra("wifi"))); 
     } catch (Exception e) { 
     } 
     System.exit(0); 
    } 
} 

的AndroidManifest.xml:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

ADB命令:

$ adb shell am start -n org.mytools.config/.MainActivity -e wifi true 
$ adb shell am start -n org.mytools.config/.MainActivity -e wifi false 
+0

我調整了這一點,並改變了BroadcastReceiver的活動,以便它可以添加到任何應用程序,它不會顯示任何GUI。 – 2012-11-05 15:40:46

+0

@ ferdy182:您可以發佈代碼,以便其他人可以使用和評估它嗎? – GodMan 2012-11-07 09:46:10

+1

@GodMan在這裏找到https://plus.google.com/110502863648146989289/posts/Ri1Dcm6cn48 – 2012-12-20 09:45:56

0

用引號

使用前:adb shell "svc wifi enable"

這將工作:)

+0

我仍然不能得到這個工作,我試過了Note,Note2,紮根的GS3和驚奇。 – Nefariis 2013-01-28 23:04:47

+0

如果您在命令提示符下嘗試此操作,它將起作用.. 它不會打開任何內容..操作將在後臺執行 – Sanal 2014-03-21 11:49:13

2
adb shell "svc wifi enable" 

這個工作&這使得在後臺操作,而無需打開相關選項!

1

我測試了這個命令:adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi。WifiSettings 亞行外殼輸入KeyEvent的19 &亞行外殼輸入KeyEvent的19 &亞行外殼輸入KeyEvent的23

而且只能在窗口的提示,也許是因爲一些司機

亞行外殼SVC無線網絡啓用|禁用我想,只有擁有root權限的工作

+0

這非常有用:我的Genymotion仿真程序隨機啓動,但可用的WiFi有時未選中。我用這個:shell'am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings;輸入鍵事件20;輸入鍵事件23' – 2016-12-08 15:16:43

5
  1. 轉至位置android/android-sdk/platform-tools
  2. 轉變 +右鍵點擊
  3. 打開CMD此處鍵入以下命令

    1. adb shell
    2. su
    3. svc wifi enable/disable
  4. 做!!!!!

1

我可以這樣做:

settings put global wifi_on 0 
settings put global wifi_scan_always_enabled 0 

有時候,如果在引導過程中完成的(即固定bootloop such as this),它並不適用好,你還可以繼續首先啓用飛行模式:

settings put global airplane_mode_on 1 
settings put global wifi_on 0 
settings put global wifi_scan_always_enabled 0 

其他選項是強制的:

while true; do settings put global wifi_on 0; done 

在LG G5(SE)的Android 7上進行了測試(無根)的股票mod。