TestDevice

public class TestDevice
extends NativeDevice

java.lang.Object
   ↳ com.android.tradefed.device.NativeDevice
     ↳ com.android.tradefed.device.TestDevice


為完整堆疊 Android 裝置實作 ITestDevice

摘要

巢狀類別

class TestDevice.MicrodroidBuilder

用於建立 Microdroid TestDevice 的建構工具。 

欄位

public static final String DISMISS_KEYGUARD_CMD

可用來關閉鍵盤保護框的指令。

公用建構函式

TestDevice(IDevice device, IDeviceStateMonitor stateMonitor, IDeviceMonitor allocationMonitor)

公用方法

boolean canSwitchToHeadlessSystemUser()

傳回是否可切換至無頭 SYSTEM 使用者。

boolean clearErrorDialogs()

嘗試關閉目前在裝置 UI 上顯示的任何錯誤對話方塊。

int createUser(String name)

使用指定名稱和預設標記 0 建立使用者。

int createUser(String name, boolean guest, boolean ephemeral, boolean forTesting)

使用指定名稱和提供的旗標建立使用者

int createUser(String name, boolean guest, boolean ephemeral)

使用指定名稱和提供的旗標建立使用者

int createUserNoThrow(String name)

以指定名稱和預設旗標 0 建立使用者。

void disableKeyguard()

嘗試停用鎖定畫面。

boolean doesFileExist(String deviceFilePath)

判斷檔案是否存在裝置上的輔助方法。

boolean doesFileExist(String deviceFilePath, int userId)

輔助方法,用於判斷裝置上是否有特定使用者的檔案。

File dumpHeap(String process, String devicePath)

嘗試從 system_server 傾印堆積。

getActiveApexes()

擷取裝置上已啟用的 APEX 相關資訊。

getAllSettings(String namespace)

傳回要求命名空間的鍵/值組合。

String getAndroidId(int userId)

尋找並傳回與 userId 相關聯的 android-id,如果找不到,則傳回 null。

getAndroidIds()

建立地圖,找出與使用者 ID 相符的 Android ID。

PackageInfo getAppPackageInfo(String packageName)

擷取裝置上安裝的套件相關資訊。

getAppPackageInfos()

擷取裝置上已安裝套件的相關資訊。

InputStreamSource getBugreport()

從裝置擷取錯誤報告。

InputStreamSource getBugreportz()

從裝置擷取 bugreportz。

DeviceFoldableState getCurrentFoldableState()

傳回裝置目前的折疊狀態,如果發生某些問題,則傳回 null。

int getCurrentUser()

傳回目前執行中的使用者 ID。

getFoldableStates()

傳回裝置上的摺疊式裝置狀態清單。

getInstalledPackageNames()

擷取裝置上的應用程式套件名稱。

KeyguardControllerState getKeyguardState()

傳回物件,以取得 Keyguard 的目前狀態;如果不支援,則傳回 null。

Integer getMainUserId()

傳回主要使用者 ID。

getMainlineModuleInfo()

取得裝置上已安裝的主線程模組相關資訊。

int getMaxNumberOfRunningUsersSupported()

取得支援同時執行的使用者數量上限。

int getMaxNumberOfUsersSupported()

取得支援的使用者人數上限。

Integer getPrimaryUserId()

傳回主要使用者 ID。

InputStreamSource getScreenshot()

擷取裝置的螢幕截圖。

InputStreamSource getScreenshot(String format, boolean rescale)

擷取裝置的螢幕截圖。

InputStreamSource getScreenshot(long displayId)

從裝置的指定顯示 ID 擷取螢幕截圖。

InputStreamSource getScreenshot(String format)

擷取裝置的螢幕截圖。

String getSetting(String namespace, String key)

請參閱 getSetting(int, String, String),並在系統使用者上執行。

String getSetting(int userId, String namespace, String key)

傳回所要求設定的值。

getUninstallablePackageNames()

擷取可解除安裝的應用程式套件名稱。

int getUserFlags(int userId)

尋找並傳回特定使用者的標記。

getUserInfos()

將 useId 對應至裝置上的 UserInfo

int getUserSerialNumber(int userId)

如果找到,則傳回與 userId 相關聯的序號,否則傳回 -10000。

boolean hasFeature(String feature)

檢查裝置是否支援某項功能。

String installPackage(File packageFile, boolean reinstall, String... extraArgs)

在裝置上安裝 Android 套件。

String installPackage(File packageFile, boolean reinstall, boolean grantPermissions, String... extraArgs)

在裝置上安裝 Android 套件。

String installPackage(File packageFile, File certFile, boolean reinstall, String... extraArgs)

在裝置上安裝 Android 套件。

String installPackageForUser(File packageFile, boolean reinstall, boolean grantPermissions, int userId, String... extraArgs)

為特定使用者在裝置上安裝 Android 套件。

String installPackageForUser(File packageFile, boolean reinstall, int userId, String... extraArgs)

為特定使用者在裝置上安裝 Android 套件。

String installPackages( packageFiles, boolean reinstall, String... extraArgs)

String installPackages( packageFiles, boolean reinstall, boolean grantPermissions, String... extraArgs)

String installPackagesForUser( packageFiles, boolean reinstall, boolean grantPermissions, int userId, String... extraArgs)

String installPackagesForUser( packageFiles, boolean reinstall, int userId, String... extraArgs)

String installRemotePackages( remoteApkPaths, boolean reinstall, String... extraArgs)

String installRemotePackages( remoteApkPaths, boolean reinstall, boolean grantPermissions, String... extraArgs)

boolean isAppEnumerationSupported()

檢查裝置上的平台是否支援應用程式列舉

boolean isHeadlessSystemUserMode()

傳回裝置是否使用無頭系統使用者模式。

boolean isMainUserPermanentAdmin()

傳回主要使用者是否為永久管理員,且無法刪除或降級為非管理員狀態。

boolean isMultiUserSupported()

判斷是否支援多位使用者。

boolean isPackageInstalled(String packageName)

針對裝置中的特定套件名稱執行查詢,確認該套件目前是否已安裝。

boolean isPackageInstalled(String packageName, String userId)

針對裝置查詢指定的套件名稱和使用者 ID,檢查該使用者目前是否已安裝該套件。

boolean isUserRunning(int userId)

檢查特定使用者是否正在執行。

boolean isUserSecondary(int userId)

傳回根據旗標的指定使用者是否為次要使用者。

boolean isUserVisible(int userId)

檢查指定使用者是否可見。

boolean isUserVisibleOnDisplay(int userId, int displayId)

檢查指定的使用者是否出現在指定螢幕上。

boolean isVisibleBackgroundUsersOnDefaultDisplaySupported()

傳回裝置是否允許使用者在 ERROR(/java.android.view.Display#DEFAULT_DISPLAY) 中以背景方式啟動。

boolean isVisibleBackgroundUsersSupported()

傳回裝置是否允許使用者在背景啟動。

listDisplayIds()

收集裝置上可用顯示器 ID 的清單,並由「dumpsys SurfaceFlinger」回報。

listDisplayIdsForStartingVisibleBackgroundUsers()

取得可用於 start a user visible in the background 的螢幕清單。

listUsers()

取得裝置上的使用者清單。

boolean logBugreport(String dataName, ITestLogger listener)

輔助方法,可取得錯誤報告並記錄至記錄器。

void notifySnapuserd(SnapuserdWaitPhase waitPhase)
void postInvocationTearDown(Throwable exception)

針對裝置特定的清除步驟,在呼叫完成後執行。

boolean removeAdmin(String componentName, int userId)

從指定使用者移除指定裝置管理員,如果成功,則傳回 true;否則傳回 false

void removeOwners()

盡力移除所有現有的裝置設定檔擁有者。

boolean removeUser(int userId)

從裝置中移除特定使用者。

boolean setDeviceOwner(String componentName, int userId)

將裝置管理員元件設為特定使用者的裝置擁有者。

void setSetting(String namespace, String key, String value)

請參閱 setSetting(int, String, String, String),並在系統使用者上執行。

void setSetting(int userId, String namespace, String key, String value)

將設定值新增至特定使用者的命名空間。

void shutdownMicrodroid(ITestDevice microdroidDevice)

關閉 microdroid 裝置 (如果有的話)。

boolean startUser(int userId)

如果使用者目前已停止,則在背景啟動該使用者。

boolean startUser(int userId, boolean waitFlag)

如果使用者目前已停止,則在背景啟動該使用者。

boolean startVisibleBackgroundUser(int userId, int displayId, boolean waitFlag)

在背景啟動特定使用者,並顯示在指定的畫面上 (即允許使用者在該畫面上啟動活動)。

boolean stopUser(int userId, boolean waitFlag, boolean forceFlag)

停止特定使用者。

boolean stopUser(int userId)

停止特定使用者。

boolean supportsMicrodroid()

檢查執行 microdroid 的先決條件。

boolean supportsMicrodroid(boolean protectedVm)

檢查執行 microdroid 的先決條件。

boolean switchUser(int userId)

切換至設有預設逾時的另一個 UserId。

boolean switchUser(int userId, long timeout)

以提供的逾時期限做為期限,切換至其他使用者 ID。

Bugreport takeBugreport()

取得 bugreport,並在 Bugreport 物件中傳回,以便處理。

String uninstallPackage(String packageName)

從裝置解除安裝 Android 套件。

String uninstallPackageForUser(String packageName, int userId)

為特定使用者從裝置上解除安裝 Android 套件。

void waitForSnapuserd(SnapuserdWaitPhase currentPhase)

受保護的方法

AaptParser createParser(File appFile)
void doAdbReboot(NativeDevice.RebootMode rebootMode, String reason)

執行 ADB 重新啟動。

InputStreamSource getBugreportInternal()
File getBugreportzInternal()

內部輔助方法,可取得 bugreportz ZIP 檔案做為 ERROR(/File)

long getCheckNewUserSleep()

公開測試。

long getHostCurrentTime()

公開測試

void prePostBootSetup()

允許每個裝置類型 (AndroidNativeDevice、TestDevice) 針對特定的開機後設定覆寫此方法。

欄位

DISMISS_KEYGUARD_CMD

public static final String DISMISS_KEYGUARD_CMD

可用來關閉螢幕鎖定畫面的指令。

公用建構函式

TestDevice

public TestDevice (IDevice device, 
                IDeviceStateMonitor stateMonitor, 
                IDeviceMonitor allocationMonitor)

公用方法

canSwitchToHeadlessSystemUser

public boolean canSwitchToHeadlessSystemUser ()

傳回是否允許切換至無介面系統使用者。

傳回
boolean

擲回
DeviceNotAvailableException

ClearErrorDialogs

public boolean clearErrorDialogs ()

嘗試關閉裝置 UI 目前顯示的任何錯誤對話方塊。

傳回
boolean true,如果沒有對話方塊或已成功清除對話方塊。否則傳回 false

擲回
DeviceNotAvailableException

createUser

public int createUser (String name)

建立使用者,使用指定名稱和預設標記 0。

參數
name String:在裝置上建立的使用者

傳回
int 建立的使用者 ID 整數

擲回
DeviceNotAvailableException

createUser

public int createUser (String name, 
                boolean guest, 
                boolean ephemeral, 
                boolean forTesting)

使用指定名稱和提供的旗標建立使用者

參數
name String:在裝置上建立的使用者

guest boolean:在建立期間啟用使用者標記 --guest

ephemeral boolean:在建立時啟用使用者標記 --ephemeral

forTesting boolean:在建立期間啟用測試標記 --for-testing

傳回
int 已建立使用者的 ID

擲回
DeviceNotAvailableException

createUser

public int createUser (String name, 
                boolean guest, 
                boolean ephemeral)

使用指定名稱和提供的旗標建立使用者

參數
name String:在裝置上建立的使用者

guest boolean:在建立期間啟用使用者標記 --guest

ephemeral boolean:在建立期間啟用使用者標記 -- short

傳回
int 已建立使用者的 ID

擲回
DeviceNotAvailableException

建立使用者 NoThrow

public int createUserNoThrow (String name)

建立使用者,使用指定名稱和預設標記 0。

參數
name String:在裝置上建立的使用者

傳回
int 建立的使用者 ID 整數,或 -1 代表錯誤。

擲回
DeviceNotAvailableException

停用鍵盤鎖

public void disableKeyguard ()

嘗試停用鎖定畫面。

首先,等待輸入調度作業準備就緒,因為目前架構實作情況偶爾會發生競爭狀況,所以裝置回報 BOOT_COMPLETE 時幾乎是以非同步方式回報 BOOT_COMPLETE。然後傳送指令來關閉螢幕鎖定畫面 (僅適用於非安全的螢幕鎖定畫面)

擲回
DeviceNotAvailableException

doesFileExist

public boolean doesFileExist (String deviceFilePath)

判斷裝置上是否存在檔案的輔助方法。

參數
deviceFilePath String:要檢查的裝置檔案絕對路徑

傳回
boolean 如果檔案存在,則傳回 true,否則傳回 false

擲回
DeviceNotAvailableException

doFileExist

public boolean doesFileExist (String deviceFilePath, 
                int userId)

輔助方法,用於判斷裝置上是否有特定使用者的檔案。

參數
deviceFilePath String:要檢查的裝置上的檔案絕對路徑

userId int:用於檢查檔案是否存在的使用者 ID

傳回
boolean 如果檔案存在,則傳回 true,否則傳回 false

擲回
DeviceNotAvailableException

dumpHeap

public File dumpHeap (String process, 
                String devicePath)

嘗試從 system_server 傾印堆積。呼叫端必須負責清除傾印的檔案。

參數
process String:要傾印堆積的裝置程序名稱。

devicePath String:裝置上放置傾印檔案的路徑。必須是權限允許的位置。

傳回
File 包含報表的 ERROR(/File)。如果失敗,則為空值。

擲回
DeviceNotAvailableException

getActiveApexes

public  getActiveApexes ()

擷取裝置上已啟用的 APEX 相關資訊。

傳回
目前在裝置上啟用的 ApexInfoERROR(/Set)

擲回
DeviceNotAvailableException

取得所有設定

public  getAllSettings (String namespace)

傳回要求命名空間的鍵/值組合。

參數
namespace String:必須是 {"system", "secure", "global"} 其中之一

傳回
鍵/值組合的對應關係。如果不支援命名空間,則為空值。

擲回
DeviceNotAvailableException

getAndroidId

public String getAndroidId (int userId)

找出並傳回與 UserId 相關聯的 android-id,如果找不到,則傳回空值。

參數
userId int

傳回
String

擲回
DeviceNotAvailableException

getAndroidIds

public  getAndroidIds ()

建立與使用者 ID 相符的 Android ID 對應圖表。並沒有保證每個使用者 ID 都能在這個函式中找到相關聯的 Android ID,因此部分使用者 ID 可能會比對為空值。

傳回
已找到相符的使用者 ID 的 Android ID 對應圖。

擲回
DeviceNotAvailableException

getAppPackageInfo

public PackageInfo getAppPackageInfo (String packageName)

擷取裝置上已安裝套件的相關資訊。

參數
packageName String

傳回
PackageInfo PackageInfonull (如果無法擷取資訊)

擲回
DeviceNotAvailableException

getAppPackageInfos

public  getAppPackageInfos ()

擷取裝置上安裝的套件資訊。

傳回
裝置上安裝的 PackageInfo ERROR(/List)

擲回
DeviceNotAvailableException

getBugreport

public InputStreamSource getBugreport ()

從裝置中擷取錯誤報告。

這項功能的實作方式保證可在沒有 SD 卡 (或尚未掛載 SD 卡) 的裝置上繼續運作。

傳回
InputStreamSource InputStreamSource 會視需求產生錯誤報告內容。如果失敗,InputStreamSource 會產生空白 ERROR(/InputStream)

getBugreportz

public InputStreamSource getBugreportz ()

從裝置擷取 bugreportz。ZIP 格式錯誤報告包含主要錯誤報告和其他有助於偵錯的記錄檔案。

僅支援「ADB 版本」或「1.0.36」以上的版本

傳回
InputStreamSource 含有 bugreportz 的 ZIP 檔案 InputStreamSource;如果失敗,系統會傳回空值。

getCurrentFoldableState

public DeviceFoldableState getCurrentFoldableState ()

傳回裝置目前的折疊狀態,如果發生問題,則傳回 null。

傳回
DeviceFoldableState

擲回
DeviceNotAvailableException

getCurrentUser

public int getCurrentUser ()

傳回目前執行中的使用者 ID。如果發生錯誤,請回傳 -10000。

傳回
int

擲回
DeviceNotAvailableException

getFoldableStates

public  getFoldableStates ()

傳回裝置上的摺疊式狀態清單。可透過「cmd device_state print-states」取得。

傳回

擲回
DeviceNotAvailableException

getInstalledPackageNames

public  getInstalledPackageNames ()

擷取裝置中顯示的應用程式套件名稱。

傳回
目前裝置上已安裝的 String 套件名稱的 ERROR(/Set)

擲回
DeviceNotAvailableException

getKeyguardState

public KeyguardControllerState getKeyguardState ()

傳回物件,以取得螢幕鎖定畫面的目前狀態;如果不支援,則傳回 null。

傳回
KeyguardControllerState 包含鍵盤防護狀態快照的 KeyguardControllerState,如果不支援 Keyguard 查詢,則會傳回空值。

擲回
DeviceNotAvailableException

getMainUserId

public Integer getMainUserId ()

傳回主要使用者 ID。

傳回
Integer 主要使用者的 userId (如果有),如果沒有主要使用者,則為空值。

擲回
DeviceNotAvailableException

getMainlineModuleInfo

public  getMainlineModuleInfo ()

取得裝置上安裝的主線程式模組相關資訊。

傳回
String 主線模組目前在裝置上安裝的 ERROR(/Set)

擲回
DeviceNotAvailableException

getMaxNumberOfRunningUsersSupported

public int getMaxNumberOfRunningUsersSupported ()

取得支援同時執行的使用者數量上限。預設為 0。

傳回
int 一個整數,用來指出同時執行中使用者的數量

擲回
DeviceNotAvailableException

getMaxNumberOfUsersSupported

public int getMaxNumberOfUsersSupported ()

取得支援的使用者人數上限。預設為 0。

傳回
int 整數,用來指定支援的使用者人數

擲回
DeviceNotAvailableException

getPrimaryUserId

public Integer getPrimaryUserId ()

傳回主要使用者 ID。

傳回
Integer 主要使用者的 userId (如果有),如果沒有主要使用者,則為空值。

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot ()

擷取裝置的螢幕截圖。

傳回
InputStreamSource 螢幕截圖的 InputStreamSource (png 格式);如果螢幕截圖失敗,則為 null

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot (String format, 
                boolean rescale)

擷取裝置的螢幕截圖。建議改用 getScreenshot(String) 搭配 JPEG 編碼,以縮小檔案大小。

參數
format String:支援 PNG、JPEG

rescale boolean:是否應重新調整螢幕截圖,以縮小產生的圖片大小

傳回
InputStreamSource 螢幕截圖的 InputStreamSource (格式);如果螢幕截圖失敗,則為 null

擲回
DeviceNotAvailableException

getScreenshot

public InputStreamSource getScreenshot (long displayId)

從特定裝置擷取螢幕截圖。格式為 PNG。

TODO:擴充上述實作方式,支援「format」和「rescale」

參數
displayId long:要取得螢幕截圖的畫面 ID。

傳回
InputStreamSource 螢幕截圖的 InputStreamSource (格式);如果螢幕截圖失敗,則為 null

擲回
DeviceNotAvailableException

getScreenshot

public InputStreamSource getScreenshot (String format)

擷取裝置的螢幕截圖。建議使用 getScreenshot(format) 搭配 JPEG 編碼,以縮減檔案大小

參數
format String:支援 PNG、JPEG

傳回
InputStreamSource 螢幕截圖的 InputStreamSource (格式);如果螢幕截圖失敗,則為 null

擲回
DeviceNotAvailableException

getSetting

public String getSetting (String namespace, 
                String key)

請參閱 getSetting(int, String, String),並在系統使用者上執行。

參數
namespace String

key String

傳回
String

擲回
DeviceNotAvailableException

getSetting

public String getSetting (int userId, 
                String namespace, 
                String key)

傳回所要求設定的值。 命名空間必須為下列其中之一:{"system", "secure", "global"}

參數
userId int

namespace String

key String

傳回
String 與使用者 namespace:key 相關聯的值。如果找不到,則為空值。

擲回
DeviceNotAvailableException

getUninstallablePackageNames

public  getUninstallablePackageNames ()

擷取可解除安裝的應用程式套件名稱。目前定義為非系統套件和更新後的系統套件。

傳回
ERROR(/Set) 目前已安裝在裝置上的可解除安裝 String 套件名稱。

擲回
DeviceNotAvailableException

getUserFlags

public int getUserFlags (int userId)

尋找並傳回特定使用者的旗標。標記是在 Android 開放原始碼計畫的「android.content.pm.UserInfo」類別中定義。

參數
userId int

傳回
int 與提供的 userId 相關聯的旗標 (如果找到的話):-10000。

擲回
DeviceNotAvailableException

getUserInfos

public  getUserInfos ()

取得裝置上 useId 到 UserInfo 的對應 Map。如果裝置的輸出內容與預期不符,就會擲回 DeviceRuntimeException

傳回
UserInfo 物件清單。

擲回
DeviceNotAvailableException

getUserSerialNumber

public int getUserSerialNumber (int userId)

如果找到,則傳回與 userId 相關聯的序號,否則傳回 -10000。

參數
userId int

傳回
int

擲回
DeviceNotAvailableException

hasFeature

public boolean hasFeature (String feature)

檢查裝置是否支援某項功能。

參數
feature String:應直接使用「feature:" 或「"格式。

傳回
boolean 如果找到功能,則傳回「是」;否則傳回「否」。

擲回
DeviceNotAvailableException

installPackage

public String installPackage (File packageFile, 
                boolean reinstall, 
                String... extraArgs)

在裝置上安裝 Android 套件。

參數
packageFile File:要安裝的 APK 檔案

reinstall boolean:如果應執行重新安裝作業,則為 true

extraArgs String:要傳遞的選用額外引數。如要瞭解可用的選項,請參閱「adb shell pm -h」。

傳回
String String (含有錯誤代碼),或 null (成功時)。

擲回
DeviceNotAvailableException

installPackage

public String installPackage (File packageFile, 
                boolean reinstall, 
                boolean grantPermissions, 
                String... extraArgs)

在裝置上安裝 Android 套件。

注意:只有需要在安裝時明確控制授予執行階段權限的用途時,才應呼叫此函式。

參數
packageFile File:要安裝的 APK 檔案

reinstall booleantrue (如果應執行重新安裝作業)

grantPermissions boolean:如果在安裝時應授予所有執行階段權限

extraArgs String:要傳遞的選用額外引數。如要瞭解可用的選項,請參閱「adb shell pm -h」。

傳回
String String (含有錯誤代碼),或 null (成功時)。

擲回
DeviceNotAvailableException

installPackage

public String installPackage (File packageFile, 
                File certFile, 
                boolean reinstall, 
                String... extraArgs)

在裝置上安裝 Android 套件。

注意:只有需要在安裝時明確控制授予執行階段權限的用途時,才應呼叫此函式。

參數
packageFile File:要安裝的 APK 檔案

certFile File:如果應執行重新安裝作業,則為 true

reinstall boolean:如果在安裝時應授予所有執行階段權限

extraArgs String:要傳遞的選用額外引數。如要瞭解可用的選項,請參閱「adb shell pm -h」。

傳回
String String (含有錯誤代碼),或 null (成功時)。

擲回
DeviceNotAvailableException

installPackageForUser

public String installPackageForUser (File packageFile, 
                boolean reinstall, 
                boolean grantPermissions, 
                int userId, 
                String... extraArgs)

為特定使用者在裝置上安裝 Android 套件。

注意:只有需要在安裝時明確控制授予執行階段權限的用途,才應呼叫此函式。

參數
packageFile File:要安裝的 APK 檔案

reinstall booleantrue (如果應執行重新安裝作業)

grantPermissions boolean:是否應在安裝時授予所有執行階段權限

userId int:要為其安裝的整數使用者 ID。

extraArgs String:要傳遞的額外引數。如要瞭解可用的選項,請參閱「adb shell pm -h」。

傳回
String String (含有錯誤代碼),或 null (成功時)。

擲回
DeviceNotAvailableException

installPackageForUser

public String installPackageForUser (File packageFile, 
                boolean reinstall, 
                int userId, 
                String... extraArgs)

為特定使用者在裝置上安裝 Android 套件。

參數
packageFile File:要安裝的 APK 檔案

reinstall booleantrue (如果應執行重新安裝作業)

userId int:要為其安裝的整數使用者 ID。

extraArgs String:要傳遞的額外引數。如要瞭解可用的選項,請參閱「adb shell pm -h」。

傳回
String 包含錯誤代碼的 String;如果成功則傳回 null

擲回
DeviceNotAvailableException

安裝套件

public String installPackages ( packageFiles, 
                boolean reinstall, 
                String... extraArgs)

參數
packageFiles

reinstall boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

安裝套件

public String installPackages ( packageFiles, 
                boolean reinstall, 
                boolean grantPermissions, 
                String... extraArgs)

參數
packageFiles

reinstall boolean

grantPermissions boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installPackagesForUser

public String installPackagesForUser ( packageFiles, 
                boolean reinstall, 
                boolean grantPermissions, 
                int userId, 
                String... extraArgs)

參數
packageFiles

reinstall boolean

grantPermissions boolean

userId int

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installPackagesForUser

public String installPackagesForUser ( packageFiles, 
                boolean reinstall, 
                int userId, 
                String... extraArgs)

參數
packageFiles

reinstall boolean

userId int

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installRemotePackages

public String installRemotePackages ( remoteApkPaths, 
                boolean reinstall, 
                String... extraArgs)

參數
remoteApkPaths

reinstall boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installRemotePackages

public String installRemotePackages ( remoteApkPaths, 
                boolean reinstall, 
                boolean grantPermissions, 
                String... extraArgs)

參數
remoteApkPaths

reinstall boolean

grantPermissions boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

isAppEnumerationSupported

public boolean isAppEnumerationSupported ()

檢查裝置上的平台是否支援應用程式列舉

傳回
boolean 如果支援應用程式列舉,則傳回「是」;否則傳回「否」

擲回
DeviceNotAvailableException

isHeadlessSystemUserMode

public boolean isHeadlessSystemUserMode ()

傳回裝置是否使用無頭系統使用者模式。

傳回
boolean

擲回
DeviceNotAvailableException

isMainUserPermanentAdmin

public boolean isMainUserPermanentAdmin ()

傳回主要使用者是否為永久管理員,且無法刪除或降級為非管理員狀態。

傳回
boolean

擲回
DeviceNotAvailableException

isMultiUserSupported

public boolean isMultiUserSupported ()

判斷是否支援多位使用者。

傳回
boolean 如果支援多用戶,則為 true;否則為 false

擲回
DeviceNotAvailableException

已安裝 isPackage

public boolean isPackageInstalled (String packageName)

針對裝置查詢特定套件名稱,確認裝置目前是否已安裝。

參數
packageName String

傳回
boolean 如果套件已回報為已安裝,則為 True。否則為 False。

擲回
DeviceNotAvailableException

isPackageInstalled

public boolean isPackageInstalled (String packageName, 
                String userId)

查詢裝置的特定套件名稱和指定使用者 ID,確認裝置目前是否安裝在該名使用者或未安裝的情況下。

參數
packageName String:我們要檢查的套件是否已安裝。

userId String:我們要檢查套件安裝的使用者 ID。如果為空值,系統會使用主要使用者零。

傳回
boolean 如果套件已回報為已安裝,則為 True。否則為 False。

擲回
DeviceNotAvailableException

isUserRunning

public boolean isUserRunning (int userId)

檢查特定使用者是否正在執行。

參數
userId int

傳回
boolean 如果使用者正在執行,則為「true」,其他情況則為 false。

擲回
DeviceNotAvailableException

isUserSecondary

public boolean isUserSecondary (int userId)

根據指定使用者的標記,傳回該使用者是否為次要使用者。

參數
userId int

傳回
boolean 如果使用者是次要使用者,則為 true;否則為 false。

擲回
DeviceNotAvailableException

isUserVisible

public boolean isUserVisible (int userId)

檢查指定使用者是否可見。

「可見」使用者是指與「人類」使用者互動的使用者,因此能夠啟動活動 (通常是在預設顯示畫面中)。

參數
userId int

傳回
boolean

擲回
DeviceNotAvailableException

isUserVisibleOnDisplay

public boolean isUserVisibleOnDisplay (int userId, 
                int displayId)

檢查指定使用者是否會在指定顯示畫面中顯示。

「可見」使用者是指與「人類」使用者互動的使用者,因此可以在該螢幕上啟動啟動活動。

參數
userId int

displayId int

傳回
boolean

擲回
DeviceNotAvailableException

isVisibleBackgroundUsersOnDefaultDisplaySupported

public boolean isVisibleBackgroundUsersOnDefaultDisplaySupported ()

傳回裝置是否允許使用者在 ERROR(/java.android.view.Display#DEFAULT_DISPLAY) 中以背景方式啟動。

如果是,您可以呼叫 startVisibleBackgroundUser(int, int, boolean),傳遞 listDisplayIdsForStartingVisibleBackgroundUsers() 傳回的顯示內容 (應包含 ERROR(/java.android.view.Display#DEFAULT_DISPLAY))。

傳回
boolean

擲回
DeviceNotAvailableException

isVisibleBackgroundUsers 支援

public boolean isVisibleBackgroundUsersSupported ()

傳回裝置是否允許使用者在背景啟動。

如果是,您可以呼叫 startVisibleBackgroundUser(int, int, boolean),傳遞 listDisplayIdsForStartingVisibleBackgroundUsers() 傳回的顯示內容。

傳回
boolean

擲回
DeviceNotAvailableException

listDisplayIds

public  listDisplayIds ()

收集「dumpsys SurfaceFlinger」回報的裝置上可用顯示器 ID 清單。

傳回
顯示清單。預設值一律會傳回預設顯示值 0。

擲回
DeviceNotAvailableException

listDisplayIdsForStartingVisibleBackgroundUsers

public  listDisplayIdsForStartingVisibleBackgroundUsers ()

取得可用於 start a user visible in the background 的螢幕清單。

傳回

擲回
DeviceNotAvailableException

列出使用者

public  listUsers ()

取得裝置上的使用者清單。如果裝置的輸出內容不如預期,就會擲回 DeviceRuntimeException

傳回
使用者 ID 清單

擲回
DeviceNotAvailableException

logBugreport

public boolean logBugreport (String dataName, 
                ITestLogger listener)

輔助方法,可取得錯誤報告並記錄至記錄器。

參數
dataName String:BugReport 回報的名稱。

listener ITestLogger:用於記錄錯誤報告的 ITestLogger

傳回
boolean 如果記錄成功,則傳回 True,否則傳回 false。

notifySnapuserd

public void notifySnapuserd (SnapuserdWaitPhase waitPhase)

參數
waitPhase SnapuserdWaitPhase

postInvocationTearDown

public void postInvocationTearDown (Throwable exception)

裝置專屬的必要清理作業額外步驟,會在呼叫完成後執行。

參數
exception Throwable:如果有,則為叫用失敗所引發的最終例外狀況。

移除管理員

public boolean removeAdmin (String componentName, 
                int userId)

從指定使用者中移除指定的裝置管理員,如果成功則傳回 true,否則傳回 false

參數
componentName String:要移除的裝置管理員。

userId int:裝置管理員所在的使用者。

傳回
boolean 如果成功,則為 True,否則傳回 false。

擲回
DeviceNotAvailableException

removeOwners

public void removeOwners ()

盡可能移除所有現有的裝置設定檔擁有者。

擲回
DeviceNotAvailableException

removeUser

public boolean removeUser (int userId)

從裝置中移除特定使用者。

參數
userId int:要移除的使用者

傳回
boolean 如果移除使用者成功,則傳回 true,否則傳回 false。

擲回
DeviceNotAvailableException

setDeviceOwner

public boolean setDeviceOwner (String componentName, 
                int userId)

將裝置管理員元件設為特定使用者的裝置擁有者。

參數
componentName String:裝置管理員為裝置擁有者。

userId int:裝置擁有者所在國家/地區的使用者。

傳回
boolean 如果成功,則為 True,否則傳回 false。

擲回
DeviceNotAvailableException

設定

public void setSetting (String namespace, 
                String key, 
                String value)

請參閱 setSetting(int, String, String, String),並在系統使用者上執行。

參數
namespace String

key String

value String

擲回
DeviceNotAvailableException

設定

public void setSetting (int userId, 
                String namespace, 
                String key, 
                String value)

將設定值新增至特定使用者的命名空間。部分設定必須重新啟動後才能使用。命名空間必須為下列其中之一:{"system", "secure", "global"}

參數
userId int

namespace String

key String

value String

擲回
DeviceNotAvailableException

shutdownMicrodroid

public void shutdownMicrodroid (ITestDevice microdroidDevice)

關閉 microdroid 裝置 (如果有的話)。

參數
microdroidDevice ITestDevice

擲回
com.android.tradefed.device.DeviceNotAvailableException
DeviceNotAvailableException

startUser

public boolean startUser (int userId)

如果使用者目前已停止,則在背景啟動該使用者。如果使用者已在背景執行,這個方法就是 NOOP。

參數
userId int:要在背景啟動的使用者

傳回
boolean 如果使用者已成功在背景啟動,則為 true。

擲回
DeviceNotAvailableException

startUser

public boolean startUser (int userId, 
                boolean waitFlag)

如果特定使用者目前已停止,在背景啟動該使用者。如果使用者已在背景執行,這個方法就是 NOOP。可提供額外的旗標,等待作業生效。

參數
userId int:要以背景方式啟動的使用者

waitFlag boolean:會讓指令等待使用者啟動並解鎖。

傳回
boolean 如果使用者已成功在背景啟動,則為 true。

擲回
DeviceNotAvailableException

startVisibleBackgroundUser

public boolean startVisibleBackgroundUser (int userId, 
                int displayId, 
                boolean waitFlag)

在背景啟動特定使用者,並在指定螢幕上顯示 (也就是允許使用者在該螢幕上啟動活動)。

注意: 這個指令不會檢查使用者是否存在、螢幕是否可用、device supports such feature 等。

參數
userId int:要以背景方式啟動的使用者

displayId int:開始向使用者顯示的顯示畫面

waitFlag boolean:會讓指令等待使用者啟動並解鎖。

傳回
boolean true:如果使用者已成功在背景啟動可見。

擲回
DeviceNotAvailableException

stopUser

public boolean stopUser (int userId, 
                boolean waitFlag, 
                boolean forceFlag)

停止特定使用者。您可以提供額外旗標,等待作業生效,並強制終止使用者。無法停止目前的使用者和系統使用者。

參數
userId int:要停止的使用者。

waitFlag boolean:會讓指令等待使用者停止。

forceFlag boolean:會強制停止使用者。

傳回
boolean 如果使用者已成功停止,則為 true。

擲回
DeviceNotAvailableException

stopUser

public boolean stopUser (int userId)

停止特定使用者。如果使用者已停止,這個方法就是 NOOP。無法停止目前和系統使用者。

參數
userId int:要停止的使用者。

傳回
boolean 如果使用者已成功停止,則為 true。

擲回
DeviceNotAvailableException

支援 Microdroid

public boolean supportsMicrodroid ()

檢查執行微型機器人的先決條件。

傳回
boolean 如果滿足前置條件,則傳回 true,否則傳回 false。

支援 Microdroid

public boolean supportsMicrodroid (boolean protectedVm)

檢查執行微型機器人的先決條件。

參數
protectedVm boolean:如果 microdroid 要在受保護的 VM 上執行,則為 true。

傳回
boolean 如果滿足前置條件,則傳回 true,否則傳回 false。

switchUser

public boolean switchUser (int userId)

切換至另一個使用者 ID,並設定預設逾時時間。switchUser(int, long)

參數
userId int

傳回
boolean 如果新 userId 與 userId 供應工具相符,則傳回「是」。否則為 False。

擲回
DeviceNotAvailableException

SwitchUser

public boolean switchUser (int userId, 
                long timeout)

以提供的逾時期限為期限,切換至其他 userId。在使用者變更成功後,嘗試停用鎖定畫面。

參數
userId int

timeout long:等待後再傳回 false,表示切換使用者失敗。

傳回
boolean 如果新 userId 與 userId 供應工具相符,則傳回「是」。否則為 False。

擲回
DeviceNotAvailableException

takeBugreport

public Bugreport takeBugreport ()

取得錯誤報告,並在 Bugreport 物件中傳回以進行處理。發生問題時會傳回空值。您必須透過 Bugreport.close() 清除 Bugreport 物件中參照的檔案。

傳回
Bugreport

uninstallPackage

public String uninstallPackage (String packageName)

從裝置上解除安裝 Android 套件。

參數
packageName String:要解除安裝的 Android 套件

傳回
String 包含錯誤代碼的 String;如果成功則傳回 null

擲回
DeviceNotAvailableException

uninstallPackageForUser

public String uninstallPackageForUser (String packageName, 
                int userId)

針對特定使用者,從裝置上解除安裝 Android 套件。

參數
packageName String:要解除安裝的 Android 套件

userId int:要解除安裝的整數使用者 ID。

傳回
String 包含錯誤代碼的 String;如果成功則傳回 null

擲回
DeviceNotAvailableException

waitForSnapuserd

public void waitForSnapuserd (SnapuserdWaitPhase currentPhase)

參數
currentPhase SnapuserdWaitPhase

擲回
DeviceNotAvailableException

受保護的方法

createParser

protected AaptParser createParser (File appFile)

參數
appFile File

傳回
AaptParser

doAdbReboot

protected void doAdbReboot (NativeDevice.RebootMode rebootMode, 
                String reason)

執行 ADB 重新啟動。

參數
rebootMode NativeDevice.RebootMode:這次重新啟動的模式。

reason String:針對這次重新啟動。

擲回
com.android.tradefed.device.DeviceNotAvailableException
DeviceNotAvailableException

getBugreportInternal

protected InputStreamSource getBugreportInternal ()

傳回
InputStreamSource

getBugreportzInternal

protected File getBugreportzInternal ()

內部輔助程式方法,可取得 bugreportz ZIP 檔案做為 ERROR(/File)

傳回
File

getCheckNewUserSleep

protected long getCheckNewUserSleep ()

公開測試。

傳回
long

getHostCurrentTime

protected long getHostCurrentTime ()

已公開供測試

傳回
long

prePostBootSetup

protected void prePostBootSetup ()

允許每個裝置類型 (AndroidNativeDevice、TestDevice) 針對特定的開機後設定覆寫此方法。

擲回
DeviceNotAvailableException