如何避免monkey壓測關閉wifi

@TOCmonkey壓測問題

如何避免monkey壓測關閉wifi——自動開啓wifi

最近有一個需求是使用monkey 壓力測試批量的安卓apk,獲取apk運行時產生的流量。然而,常常沒跑幾個,monkey就把wifi關了。。。我也是醉醉噠

設備:一臺沒有裝sim卡的華爲手機

一、試圖嘗試過的方法

  1. 隱藏虛擬鍵及頂部狀態欄:
adb shell settings put global policy_control immersive.full=*

這個方法失敗了,我猜是因爲只是隱藏了狀態欄,但是monkey依然會將其觸發(點擊)出來,然後(不小心)關閉我的wifi。

  1. 將手機root後,直接使用下述命令開啓
adb shell svc wifi disable
adb shell svc wifi enable

這個方法我直接放棄了,root手機太麻煩了,先試試別的。

二、編寫可以檢測wifi狀態的apk

借鑑了裏面的代碼和命令

https://www.jianshu.com/p/4e3f80adaeb1

1.使用android studio編寫上述鏈接中的apk——wifi_on.apk,安裝在華爲手機上。
2.檢測wlan0是否正常(wifi是否成功連上)

def check_wifi():
    cmd = 'adb shell ifconfig wlan0'
    r = os.popen(cmd)
    text = r.read()
    if 'RUNNING' in text:
        return True
    else:
        return False
  1. 檢測wifi_on,apk是否正常允許
def check_if_apk_run():
    cmd_if_run = ' adb shell ps | findstr *** ' # ***是wifi_on.apk的包名
    r = os.popen(cmd_if_run)
    text = r.read()
    if len(text)> 0 :
        return True
    else:
        cmd_start = 'adb shell am start -W ***/.MainActivity' #命令行啓動wifi_on,-W等待啓動成功
        r = os.popen(cmd_start)
        text = r.read()
        if 'Complete' in text:
            return True
        else:
            return False

4.當wifi沒有連接,並且wifi_on正在運行,使用下述命令向wifi_on傳遞intent com.example.wifiON 來開啓wifi

adb shell am broadcast -a com.example.wifiON -n ***/.WifiControllerReceiver

總結

到這裏基本就算完成了。
你以爲成功了嗎?並沒有,至少對於我來說並沒有。華爲在獲取權限時出現了下述提示:
在這裏插入圖片描述
。。。
查了一圈解決方案,好像還是需要root,用svc wifi命令實現方可繞過華爲的這個檢測。
我是誰我在哪兒我要做什麼,噢我要root手機,噢不,我選擇人工允許。

經過測試,華爲、三星均出現了上述問題,vivo未出現。

2019年3月11日補充:
三星經過下述調試可解決需手動授權的問題。
在這裏插入圖片描述