adb 命令拉起 apk 並傳遞引數及相關注意事項

2021-10-22 09:20:15 字數 2537 閱讀 8209

demo播測,需要使用adb命令拉起播測demo,並傳必要的引數將值帶給我。

後面發現是存在特殊字元,傳參時導致了截斷,故不完整。只需要特殊編碼或者處理下就好。

獲取傳參值的**為:

private

void

testintentdata()

if(intent.

ha***tra

("type"))

if(intent.

ha***tra

("url"))

system.out.

println

("> action: "

+ action +

", type: "

+ type

+", url: "

+ url)

;return;}

system.out.

println

("> intent is null");

}

上面接收三個引數對應的值:action 引數、type 引數和 url 引數。

adb拉起apk命令:

-e type "open"

-e url ""

命令說明:adb shell am start -n [包名]/[啟動類名] -e [引數key] [引數值] ...

輸出結果:

可以看到,通過adb命令傳參的引數值都不存在特殊字元,故成功的獲取到了傳進來的所有引數的值。

如果我們的傳參的url引數值變為

呼叫:

輸出結果:

這裡發現url的值被截斷了,這是因為url引數值中存在特殊字元&

adb shell相當於是在linux shell環境下執行的,而&符號是shell中的特殊字元,表示後台執行,因此會出現截斷的情況。

使用命令:

這裡只是對特殊字元&做了簡單的處理,至於其他特殊字元同學們可以自己去實踐,這裡不推薦採用該方案,因為可能有些引數值的特殊字元單純加\無法生效。

將引數值進行urlencode編碼後傳遞,**中獲取到引數值後,再進行解碼操作即可。

修改**:

private

void

testintentdata()

if(intent.

ha***tra

("type"))

if(intent.

ha***tra

("url"))

system.out.

println

("> action: "

+ action +

", type: "

+ type

+", url: "

+ url)

;return;}

system.out.

println

("> intent is null");

}

編碼後的值

如下圖:

輸入命令如下:

輸出結果:

推薦解決方案 2 ,解決幾乎所有情況!

技術永不眠!我們下期見!

使用adb命令安裝apk

adb android debug bridge 安卓除錯橋 tools。它就是乙個命令列視窗,用於通過電腦端與模擬器或者是裝置之間的互動。利用adb工具的前提是在手機上開啟usb除錯,然後通過資料線連線電腦。在電腦上使用命令模式來操作手機 重啟 進入recovery 進入fastboot 推送檔案...

用adb命令檢視apk版本

android測試經常用到adb命令查某個apk的版本,如下 adb devices 顯示連線的裝置 adb root 獲取手機root許可權 adb remount 重新掛載系統分割槽,使系統分割槽重新可寫 adb shell 進入目標裝置的linux shell環境 ls 顯示所有資料夾 根據a...

使用adb命令檢視apk版本

adb devices 顯示連線的裝置 adb root 獲取手機root許可權 adb remount 重新掛載系統分割槽,使系統分割槽重新可寫 adb shell 進入目標裝置的linux shell環境 ls 顯示所有資料夾 根據apk名字確定相應資料夾及路徑 exit 退出shell環境 c...