本地設備

public class NativeDevice
extends Object implements IManagedTestDevice , IConfigurationReceiver , ITestLoggerReceiver

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


ITestDevice非全棧 android 設備的默認實現。

概括

嵌套類

class NativeDevice.AdbAction

運行操作系統“adb ....”命令的ERROR(DeviceAction/com.android.tradefed.device.NativeDevice.DeviceAction DeviceAction)

class NativeDevice.AdbShellAction

class NativeDevice.RebootDeviceAction

用於重啟設備的ERROR(DeviceAction/com.android.tradefed.device.NativeDevice.DeviceAction DeviceAction)

常量

int INVALID_USER_ID

為任何無效/未找到的用戶 ID 返回的值:UserHandle 定義了 -10000 值

long MAX_HOST_DEVICE_TIME_OFFSET

int MAX_RETRY_ATTEMPTS

命令重試嘗試執行的默認次數

領域

protected static final String SD_CARD

protected static final String STORAGE_EMULATED

protected TestDeviceOptions mOptions

protected final IDeviceStateMonitor mStateMonitor

公共構造函數

NativeDevice (IDevice device, IDeviceStateMonitor stateMonitor, IDeviceMonitor allocationMonitor)

創建一個TestDevice

公共方法

boolean canSwitchToHeadlessSystemUser ()

返回是否允許切換到無頭 SYSTEM 用戶。

boolean checkApiLevelAgainstNextRelease (int strictMinLevel)

在給定最低支持級別的情況下,檢查當前是否支持某個功能。

boolean checkConnectivity ()

檢查設備是否具有網絡連接。

boolean clearErrorDialogs ()

嘗試關閉當前顯示在設備 UI 上的任何錯誤對話框。

void clearLastConnectedWifiNetwork ()

清除上次連接的 wifi 網絡。

void clearLogcat ()

刪除任何累積的 logcat 數據。

boolean connectToWifiNetwork ( wifiSsidToPsk, boolean scanSsid) connectToWifiNetwork ( wifiSsidToPsk, boolean scanSsid)

連接到 wifi 網絡。

boolean connectToWifiNetwork (String wifiSsid, String wifiPsk)

連接到 wifi 網絡。

boolean connectToWifiNetwork ( wifiSsidToPsk) connectToWifiNetwork ( wifiSsidToPsk)

連接到 wifi 網絡。f

boolean connectToWifiNetwork (String wifiSsid, String wifiPsk, boolean scanSsid)

連接到 wifi 網絡。

boolean connectToWifiNetworkIfNeeded (String wifiSsid, String wifiPsk, boolean scanSsid)

connectToWifiNetwork(String, String)的一種變體,僅當設備當前沒有網絡連接時才連接。

boolean connectToWifiNetworkIfNeeded (String wifiSsid, String wifiPsk)

connectToWifiNetwork(String, String)的一種變體,僅當設備當前沒有網絡連接時才連接。

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

使用給定名稱和提供的標誌創建用戶

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

使用給定名稱和提供的標誌創建用戶

int createUser (String name)

創建一個具有給定名稱和默認標誌 0 的用戶。

int createUserNoThrow (String name)

創建一個具有給定名稱和默認標誌 0 的用戶。

void deleteFile (String deviceFilePath)

用於刪除設備上的文件或目錄的輔助方法。

void deregisterDeviceActionReceiver ( IDeviceActionReceiver deviceActionReceiver)

刪除已註冊的IDeviceActionReceiver

boolean deviceSoftRestarted ( ProcessInfo prevSystemServerProcess)

通過將當前 system_server 與之前的 system_server ProcessInfo進行比較來檢查設備是否軟重啟的輔助方法。

boolean deviceSoftRestartedSince (long utcEpochTime, TimeUnit timeUnit)

檢查設備是否從設備紀元以來的 UTC 時間及其ERROR(/TimeUnit)軟重啟的輔助方法。

boolean disableAdbRoot ()

關閉 adb root。

void disableKeyguard ()

嘗試禁用鍵盤鎖。

boolean disableNetworkMonitor ()

禁用設備上的網絡監控。

boolean disconnectFromWifi ()

斷開與 wifi 網絡的連接。

boolean doesFileExist (String deviceFilePath, int userId)

確定給定用戶設備上的文件是否存在的輔助方法。

boolean doesFileExist (String deviceFilePath)

確定設備上的文件是否存在的輔助方法。

File dumpHeap (String process, String devicePath)

嘗試從 system_server 轉儲堆。

boolean enableAdbRoot ()

打開 adb root。

boolean enableNetworkMonitor ()

在設備上啟用網絡監控。

String executeAdbCommand (long timeout, String... cmdArgs)

將 adb 命令作為具有指定超時的系統命令執行的輔助方法。

String executeAdbCommand (long timeout, envMap, String... cmdArgs) executeAdbCommand (long timeout, envMap, String... cmdArgs)

將 adb 命令作為具有指定超時的系統命令執行的輔助方法。

String executeAdbCommand (String... cmdArgs)

將 adb 命令作為系統命令執行的輔助方法。

CommandResult executeFastbootCommand (String... cmdArgs)

將 fastboot 命令作為系統命令執行的輔助方法,默認超時為 2 分鐘。

CommandResult executeFastbootCommand (long timeout, String... cmdArgs)

將 fastboot 命令作為系統命令執行的輔助方法。

CommandResult executeLongFastbootCommand (String... cmdArgs)

將長時間運行的 fastboot 命令作為系統命令執行的輔助方法。

CommandResult executeLongFastbootCommand ( envVarMap, String... cmdArgs) executeLongFastbootCommand ( envVarMap, String... cmdArgs)

將長時間運行的 fastboot 命令作為具有系統環境變量的系統命令執行的輔助方法。

String executeShellCommand (String command)

執行 adb shell 命令並將輸出作為ERROR(/String)返回的幫助程序方法。

void executeShellCommand (String command, IShellOutputReceiver receiver, long maxTimeToOutputShellResponse, TimeUnit timeUnit, int retryAttempts)

執行 adb shell 命令,使用更多參數來控制命令行為。

void executeShellCommand (String command, IShellOutputReceiver receiver, long maxTimeoutForCommand, long maxTimeToOutputShellResponse, TimeUnit timeUnit, int retryAttempts)

執行 adb shell 命令,使用更多參數來控制命令行為。

void executeShellCommand (String command, IShellOutputReceiver receiver)

執行給定的 adb shell 命令,如果命令失敗則重試多次。

CommandResult executeShellV2Command (String cmd)

執行 adb shell 命令並將結果作為CommandResult返回的輔助方法,其中正確填充了命令狀態輸出、stdout 和 stderr。

CommandResult executeShellV2Command (String cmd, OutputStream pipeToOutput)

執行 adb shell 命令並將結果作為CommandResult返回的幫助程序方法,其中正確填充了命令狀態輸出和 stderr。

CommandResult executeShellV2Command (String cmd, File pipeAsInput)

執行 adb shell 命令並將結果作為CommandResult返回的幫助程序方法,其中正確填充了命令狀態輸出、stdout 和 stderr。

CommandResult executeShellV2Command (String cmd, long maxTimeoutForCommand, TimeUnit timeUnit, int retryAttempts)

執行 adb shell 命令,使用更多參數來控制命令行為。

CommandResult executeShellV2Command (String cmd, long maxTimeoutForCommand, TimeUnit timeUnit)

執行 adb shell 命令,使用更多參數來控制命令行為。

CommandResult executeShellV2Command (String cmd, File pipeAsInput, OutputStream pipeToOutput, long maxTimeoutForCommand, TimeUnit timeUnit, int retryAttempts)

執行 adb shell 命令,使用更多參數來控制命令行為。

CommandResult executeShellV2Command (String cmd, File pipeAsInput, OutputStream pipeToOutput, OutputStream pipeToError, long maxTimeoutForCommand, TimeUnit timeUnit, int retryAttempts)

執行 adb shell 命令,使用更多參數來控制命令行為。

CommandResult fastbootWipePartition (String partition)

擦除設備分區的輔助方法。

getActiveApexes ()

獲取有關設備上激活的 APEX 的信息。

getAllSettings (String namespace)

返回請求的命名空間的鍵值對。

DeviceAllocationState getAllocationState ()

返回設備的當前分配狀態

String getAndroidId (int userId)

查找並返回與 userId 關聯的 android-id,如果找不到則返回 null。

getAndroidIds ()

創建一個找到匹配用戶 ID 的 Android ID 地圖。

int getApiLevel ()

獲取設備 API 級別。

PackageInfo getAppPackageInfo (String packageName)

獲取有關安裝在設備上的包的信息。

getAppPackageInfos ()

獲取設備上安裝的包的信息。

String getBasebandVersion ()

獲取此設備的基帶(無線電)版本的便捷方法。

Integer getBattery ()

返回設備的當前電池電量,如果電池電量不可用,則返回 Null。

boolean getBooleanProperty (String name, boolean defaultValue)

返回給定屬性的布爾值。

getBootHistory ()

Helper 方法收集帶有啟動時間和啟動原因的啟動歷史映射。

getBootHistorySince (long utcEpochTime, TimeUnit timeUnit)

Helper 方法從設備的紀元以來的給定時間和指定的時間單位收集啟動歷史映射,其中包含啟動時間和啟動原因。

String getBootloaderVersion ()

獲取此設備的引導加載程序版本的便捷方法。

InputStreamSource getBugreport ()

從設備中檢索錯誤報告。

InputStreamSource getBugreportz ()

從設備中檢索 bugreportz。

String getBuildAlias ()

檢索設備當前運行的構建的別名。

String getBuildFlavor ()

檢索設備的構建風格。

String getBuildId ()

檢索設備當前正在運行的版本。

String getBuildSigningKeys ()

返回用於簽署設備映像的密鑰類型

通常,Android 設備可能使用測試密鑰(如 AOSP)或發布密鑰(由各個設備製造商控制)進行簽名

DeviceDescriptor getCachedDeviceDescriptor ()

如果分配了設備,則返回緩存的DeviceDescriptor ,否則返回當前的DeviceDescriptor

DeviceDescriptor getCachedDeviceDescriptor (boolean shortDescriptor)

如果分配了設備,則返回緩存的DeviceDescriptor ,否則返回當前的DeviceDescriptor

String[] getChildren (String path)

使用IFileEntry的替代方法有時會因為權限問題而無法工作。

AbstractConnection getConnection ()

與設備關聯的當前連接。

DeviceFoldableState getCurrentFoldableState ()

返回設備的當前可折疊狀態,如果出現某些問題則返回 null。

int getCurrentUser ()

返回當前運行用戶的 id。

String getDeviceClass ()

獲取設備類。

long getDeviceDate ()

從紀元開始以毫秒為單位返回設備的日期。

DeviceDescriptor getDeviceDescriptor ()

從設備信息中返回一個DeviceDescriptor以獲取有關它的信息,而不傳遞實際的設備對象。

DeviceDescriptor getDeviceDescriptor (boolean shortDescriptor)

從設備信息中返回一個DeviceDescriptor以獲取有關它的信息,而不傳遞實際的設備對象。

TestDeviceState getDeviceState ()

獲取設備的狀態。

long getDeviceTimeOffset (Date date)

幫助獲取設備與給定ERROR(/Date)之間的時差。

InputStreamSource getEmulatorOutput ()

獲取模擬器stdout和stderr的流

Process getEmulatorProcess ()

返回與該模擬器對應的ERROR(/Process)

final File getExecuteShellCommandLog ()

包含所有executeShellCommand(String)日誌的日誌。

long getExternalStoreFreeSpace ()

確定設備外部存儲可用空間量的輔助方法。

String getFastbootPath ()

返回正在使用的 fastboot 二進製文件的路徑。

String getFastbootProductType ()

在 fastboot 模式下獲取此設備的產品類型的便捷方法。

String getFastbootProductVariant ()

在 fastboot 模式下獲取此設備的產品類型的便捷方法。

String getFastbootSerialNumber ()

返回快速啟動模式序列號。

String getFastbootVariable (String variableName)

從設備中檢索給定的 fastboot 變量值。

String getFastbootVersion ()

返回正在使用的 fastboot 二進製文件的版本字符串。

IFileEntry getFileEntry (String path)

檢索對設備上遠程文件的引用。

IFileEntry getFileEntry (FileListingService.FileEntry entry)

從非根路徑獲取FileEntry非官方幫助程序。

getFoldableStates ()

返回設備上的可折疊狀態列表。

IDevice getIDevice ()

返回對關聯的 ddmlib IDevice引用。

getInstalledPackageNames ()

獲取設備上存在的應用程序包名稱。

long getIntProperty (String name, long defaultValue)

從設備返回給定屬性的整數值。

String getIpAddress ()

獲取設備的 IP 地址。

KeyguardControllerState getKeyguardState ()

返回一個對像以獲取鍵盤鎖的當前狀態,如果不支持則返回 null。

long getLastExpectedRebootTimeMillis ()

返回自ERROR(/System#currentTimeMillis())返回的 EPOCH 以來 Tradefed API 上次觸發重啟的毫秒數。

int getLaunchApiLevel ()

獲取設備首次啟動的 API 級別。

InputStreamSource getLogcat ()

獲取 logcat 數據的快照流。

InputStreamSource getLogcat (int maxBytes)

獲取捕獲的 logcat 數據的最後maxBytes的快照流。

InputStreamSource getLogcatDump ()

獲取設備當前 logcat 的轉儲。

InputStreamSource getLogcatSince (long date)

從提供的日期開始獲取捕獲的 logcat 數據的快照流。

String getMacAddress ()

返回設備的MAC地址,如果向設備查詢失敗則返回null。

Integer getMainUserId ()

返回主用戶 ID。

getMainlineModuleInfo ()

獲取有關設備上安裝的主線模塊的信息。

int getMaxNumberOfRunningUsersSupported ()

獲取支持的同時運行用戶的最大數量。

int getMaxNumberOfUsersSupported ()

獲取支持的最大用戶數。

Process getMicrodroidProcess ()
IDeviceStateMonitor getMonitor ()

返回與設備關聯的IDeviceStateMonitor

String getMountPoint (String mountName)

返回掛載點。

ITestDevice.MountPointInfo getMountPointInfo (String mountpoint)

返回對應於指定掛載點路徑的MountPointInfo ,如果該路徑沒有掛載任何內容或不作為掛載點出現在 /proc/mounts 中,則返回null

getMountPointInfo ()

返回設備上 /proc/mounts 中信息的解析版本

TestDeviceOptions getOptions ()

獲取設備的測試選項。

long getPartitionFreeSpace (String partition)

確定設備分區上可用空間量的輔助方法。

Integer getPrimaryUserId ()

返回主用戶 ID。

ProcessInfo getProcessByName (String processName)

Helper 方法運行“pidof”和“stat”命令並返回具有給定進程的 PID 和進程啟動時間的ProcessInfo對象。

String getProcessPid (String process)

如果出現問題,則返回服務的 pid 或 null。

String getProductType ()

獲取此設備的產品類型的便捷方法。

String getProductVariant ()

獲取此設備的產品變體的便捷方法。

String getProperty (String name)

從設備中檢索給定的屬性值。

ITestDevice.RecoveryMode getRecoveryMode ()

獲取設備當前使用的恢復模式。

InputStreamSource getScreenshot (String format)

從設備抓取屏幕截圖。

InputStreamSource getScreenshot (long displayId)

從給定顯示 ID 的設備抓取屏幕截圖。

InputStreamSource getScreenshot (String format, boolean rescale)

從設備抓取屏幕截圖。

InputStreamSource getScreenshot ()

從設備抓取屏幕截圖。

String getSerialNumber ()

獲取此設備序列號的便捷方法。

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

返回請求設置的值。

String getSetting (String namespace, String key)

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

String getSimOperator ()

如果不可用或設備不可用,則返回 SIM 卡運營商或 null。

String getSimState ()

如果不可用或設備不可用,則返回 SIM 卡狀態或 null。

getTombstones ()

從設備中獲取並返回墓碑列表。

long getTotalMemory ()

返回以字節為單位的總物理內存大小,如果出現內部錯誤則返回 -1

getUninstallablePackageNames ()

獲取可卸載的應用程序包名稱。

boolean getUseFastbootErase ()

獲取是否使用 fastboot erase 或 fastboot format 擦除設備上的分區。

int getUserFlags (int userId)

查找並返回給定用戶的標誌。

getUserInfos ()

獲取設備上useId到UserInfo的Map。

int getUserSerialNumber (int userId)

如果找到,則返回與 userId 關聯的序列號,在任何其他情況下返回 -10000。

IManagedTestDevice.DeviceEventResponse handleAllocationEvent (DeviceEvent event)

處理給定的DeviceEvent

處理 DeviceEvent,它可能會也可能不會將此設備轉換到新的分配狀態。

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 installPackageForUser (File packageFile, boolean reinstall, int userId, String... extraArgs)

為給定用戶在設備上安裝 Android 包。

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

為給定用戶在設備上安裝 Android 包。

boolean isAdbRoot ()

boolean isAdbTcp ()
boolean isAppEnumerationSupported ()

檢查設備上的平台是否支持應用枚舉

boolean isBypassLowTargetSdkBlockSupported ()

檢查設備上的平台是否支持在應用安裝時繞過低目標 sdk 塊

boolean isDeviceEncrypted ()

返回設備是否已加密。

boolean isDirectory (String path)

如果設備上的路徑是目錄,則返回 True,否則返回 false。

boolean isEnableAdbRoot ()
boolean isEncryptionSupported ()

如果設備支持加密,則返回。

boolean isExecutable (String fullPath)

如果設備上的文件路徑是可執行文件,則返回 True,否則返回 false。

boolean isFastbootEnabled ()

如果 fastboot 可用於設備,則返回。

boolean isHeadless ()

如果設備是無頭的(無屏幕),則返回 true,否則返回 false。

boolean isHeadlessSystemUserMode ()

返回設備是否使用無頭系統用戶模式。

boolean isMainUserPermanentAdmin ()

返回主用戶是否是永久管理員並且不能被刪除或降級為非管理員狀態。

boolean isMultiUserSupported ()

確定是否支持多用戶。

boolean isPackageInstalled (String packageName, String userId)

查詢設備以獲取給定的包名稱和給定的用戶 ID,以檢查當前是否為該用戶安裝了它。

boolean isPackageInstalled (String packageName)

在設備上查詢給定的包名稱以檢查它當前是否已安裝。

boolean isRuntimePermissionSupported ()

檢查設備上的平台是否支持運行時權限授予

boolean isStateBootloaderOrFastbootd ()

如果設備處於TestDeviceState#FASTBOOTTestDeviceState.FASTBOOTD中,則返回 true。

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 ()

返回設備是否允許用戶在後台可見啟動。

boolean isWifiEnabled ()

測試wifi是否開啟。

listDisplayIds ()

收集“dumpsys SurfaceFlinger”報告的設備上可用顯示 ID 的列表。

listDisplayIdsForStartingVisibleBackgroundUsers ()

獲取可用於start a user visible in the background的顯示列表。

listUsers ()

獲取設備上的用戶列表。

boolean logAnrs ( ITestLogger logger)

從設備收集和記錄 ANR。

boolean logBugreport (String dataName, ITestLogger listener)

獲取錯誤報告並將其記錄給記者的幫助方法。

void logOnDevice (String tag, Log.LogLevel level, String format, Object... args)

在設備的 logcat 中記錄一條消息。

void nonBlockingReboot ()

發出命令以重新啟動設備並在命令完成時返回,當設備不再對 adb 可見時。

void postAdbRootAction ()

如果設備需要在 adb root 之後和設備重新聯機之前執行某些特定操作,則覆蓋。

void postAdbUnrootAction ()

如果設備需要在 adb unroot 之後和設備重新聯機之前執行某些特定操作,則覆蓋。

void postBootSetup ()

執行說明以配置設備以在每次啟動後進行測試。

void postInvocationTearDown (Throwable exception)

特定於設備的額外步驟需要清理,將在調用完成後執行。

void preInvocationSetup ( IBuildInfo info, MultiMap <String, String> attributes)

設備特定所需設置的額外步驟將在調用流程之前在設備上執行。

boolean pullDir (String deviceFilePath, File localDir)

遞歸地從設備中提取目錄內容。

boolean pullFile (String remoteFilePath, File localFile)

從設備中檢索文件。

File pullFile (String remoteFilePath, int userId)

從設備中檢索文件,將其存儲在本地臨時ERROR(/File)中,然後返回該File

File pullFile (String remoteFilePath)

從設備中檢索文件,將其存儲在本地臨時ERROR(/File)中,然後返回該File

boolean pullFile (String remoteFilePath, File localFile, int userId)

從設備中檢索文件。

String pullFileContents (String remoteFilePath)

從設備中檢索文件,並返回內容。

File pullFileFromExternal (String remoteFilePath)

從設備的外部存儲中檢索文件的便捷方法,將其存儲在本地臨時ERROR(/File)中,並返回對該File的引用。

boolean pushDir (File localFileDir, String deviceFilePath, excludedDirectories) pushDir (File localFileDir, String deviceFilePath, excludedDirectories)

遞歸地將目錄內容推送到設備,同時排除一些被過濾的目錄。

boolean pushDir (File localFileDir, String deviceFilePath)

遞歸地將目錄內容推送到設備。

boolean pushFile (File localFile, String remoteFilePath, boolean evaluateContentProviderNeeded)

pushFile(File, String)的變體,可以選擇考慮評估對內容提供者的需求。

boolean pushFile (File localFile, String remoteFilePath)

將文件推送到設備。

boolean pushString (String contents, String remoteFilePath)

將從字符串創建的文件推送到設備

void reboot (String reason)

將設備重新啟動到 adb 模式,並給出在重新啟動後保持不變的reason

void reboot ()

將設備重新啟動到 adb 模式。

void rebootIntoBootloader ()

將設備重新啟動到引導加載程序模式。

void rebootIntoFastbootd ()

將設備重新啟動到 fastbootd 模式。

void rebootIntoRecovery ()

將設備重新啟動到 adb 恢復模式。

void rebootIntoSideload ()

將設備重新啟動到 adb sideload 模式(請注意,這是 recovery 下的一種特殊模式)

阻塞直到設備進入側載模式

void rebootIntoSideload (boolean autoReboot)

將設備重新啟動到 adb sideload 模式(請注意,這是 recovery 下的一種特殊模式)

阻塞直到設備進入側載模式

void rebootUntilOnline ()

reboot()的替代方法,它只會阻塞直到設備在線,即對 adb 可見。

void rebootUntilOnline (String reason)

reboot()的替代方法,它只會阻塞直到設備在線,即對 adb 可見。

void rebootUserspace ()

僅重啟設備的用戶空間部分。

void rebootUserspaceUntilOnline ()

rebootUserspace() ()} 的替代方法,它只會阻塞直到設備在線,即對 adb 可見。

boolean recoverDevice ()

嘗試恢復設備通信。

void registerDeviceActionReceiver ( IDeviceActionReceiver deviceActionReceiver)

為此設備註冊一個IDeviceActionReceiver

void remountSystemWritable ()

使設備上的系統分區可寫。

void remountVendorWritable ()

使設備上的供應商分區可寫。

boolean removeAdmin (String componentName, int userId)

刪除給定用戶中的給定設備管理員,如果成功則返回true ,否則返回false

void removeOwners ()

盡最大努力刪除所有現有的設備配置文件所有者。

boolean removeUser (int userId)

從設備中刪除給定的用戶。

void resetContentProviderSetup ()

重置內容提供商設置的標誌以再次觸發它。

boolean runInstrumentationTests (IRemoteAndroidTestRunner runner, ITestLifeCycleReceiver... listeners)

使用作為參數傳遞的一個或多個偵聽器執行ERROR(/#runInstrumentationTests(com.android.ddmlib.testrunner.IRemoteAndroidTestRunner,Collection))的便捷方法。

boolean runInstrumentationTests (IRemoteAndroidTestRunner runner, listeners) runInstrumentationTests (IRemoteAndroidTestRunner runner, listeners)

運行儀器測試,並提供設備恢復。

boolean runInstrumentationTestsAsUser (IRemoteAndroidTestRunner runner, int userId, listeners) runInstrumentationTestsAsUser (IRemoteAndroidTestRunner runner, int userId, listeners)

ERROR(ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, Collection)/com.android.tradefed.device.ITestDevice#runInstrumentationTests(com.android.ddmlib.testrunner.IRemoteAndroidTestRunner,Collection) ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, Collection))但運行測試對於給定的用戶。

boolean runInstrumentationTestsAsUser (IRemoteAndroidTestRunner runner, int userId, ITestLifeCycleReceiver... listeners)

ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, ITestLifeCycleReceiver...)相同,但為給定用戶運行測試。

void setConfiguration ( IConfiguration configuration)

注入正在使用的IConfiguration

void setDate (Date date)

在設備上設置日期

注意:在設備上設置日期需要 root

boolean setDeviceOwner (String componentName, int userId)

將設備管理組件設置為給定用戶的設備所有者。

void setDeviceState ( TestDeviceState deviceState)

更新設備的狀態。

void setEmulatorOutputStream ( SizeLimitedOutputStream output)

對於模擬器,將SizeLimitedOutputStream設置為日誌輸出

void setEmulatorProcess (Process p)

當此設備是模擬器時,設置ERROR(/Process)

void setFastbootEnabled (boolean fastbootEnabled)

為設備設置 fastboot 選項。

void setFastbootPath (String fastbootPath)

設置應該使用的 fastboot 二進製文件的路徑。

void setIDevice (IDevice newDevice)

更新與此 ITestDevice 關聯的 IDevice。

void setLogStartDelay (int delay)

以毫秒為單位設置在開始在線設備的 logcat 捕獲之前等待的時間。

void setOptions ( TestDeviceOptions options)

為設備設置TestDeviceOptions

boolean setProperty (String propKey, String propValue)

在設備上設置給定的屬性值。

void setRecovery ( IDeviceRecovery recovery)

設置要用於此設備的IDeviceRecovery

void setRecoveryMode ( ITestDevice.RecoveryMode mode)

設置當前用於設備的恢復模式。

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

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

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

將設置值添加到給定用戶的名稱空間。

void setTestLogger ( ITestLogger testLogger)

注入ITestLogger實例

void setUseFastbootErase (boolean useFastbootErase)

設置是否使用 fastboot erase 或 fastboot format 擦除設備上的分區。

void startLogcat ()

開始在後台捕獲設備的 logcat 輸出。

boolean startUser (int userId)

如果當前已停止,則在後台啟動給定用戶。

boolean startUser (int userId, boolean waitFlag)

如果當前已停止,則在後台啟動給定用戶。

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

在後台啟動給定用戶,在給定顯示中可見(即,允許用戶在該顯示中啟動活動)。

void stopEmulatorOutput ()

關閉並刪除模擬器輸出。

void stopLogcat ()

停止從設備捕獲 logcat 輸出,並丟棄當前保存的 logcat 數據。

boolean stopUser (int userId)

停止給定的用戶。

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

停止給定的用戶。

String switchToAdbTcp ()

將設備切換到 adb-over-tcp 模式。

boolean switchToAdbUsb ()

將設備切換到 adb over usb 模式。

boolean switchUser (int userId)

切換到另一個具有默認超時的 userId。

boolean switchUser (int userId, long timeout)

以提供的超時為截止日期切換到另一個 userId。

boolean syncFiles (File localFileDir, String deviceFilePath)

將本地文件目錄的內容增量同步到設備。

Bugreport takeBugreport ()

獲取錯誤報告並將其返回到Bugreport對像中以進行處理。

String uninstallPackage (String packageName)

從設備卸載 Android 包。

String uninstallPackageForUser (String packageName, int userId)

從給定用戶的設備中卸載 Android 包。

boolean unlockDevice ()

如果設備處於加密狀態,則解鎖設備。

boolean waitForBootComplete (long timeOut)

阻塞,直到設置設備的啟動完成標誌。

boolean waitForDeviceAvailable ()

等待設備響應並可用於測試。

boolean waitForDeviceAvailable (long waitTime)

等待設備響應並可用於測試。

boolean waitForDeviceAvailableInRecoverPath (long waitTime)

等待設備響應並可用,而不考慮恢復路徑。

void waitForDeviceBootloader ()

阻塞直到設備通過快速啟動可見。

boolean waitForDeviceInRecovery (long waitTime)

設備處於“adb recovery”狀態的塊(注意這與IDeviceRecovery不同)。

boolean waitForDeviceInSideload (long waitTime)

設備處於“adb sideload”狀態的塊

boolean waitForDeviceNotAvailable (long waitTime)

設備不可用的塊,即從 adb 中丟失

void waitForDeviceOnline ()

阻塞直到設備通過 adb 可見。

void waitForDeviceOnline (long waitTime)

阻塞直到設備通過 adb 可見。

boolean waitForDeviceShell (long waitTime)

等待設備響應基本的 adb shell 命令。

受保護的方法

String[] buildAdbShellCommand (String command, boolean forceExitStatusDetection)

為給定的 adb shell 命令會話和 args 構建操作系統命令

void checkApiLevelAgainst (String feature, int strictMinLevel)
NativeDevice.RebootDeviceAction createRebootDeviceAction ( NativeDevice.RebootMode rebootMode, String reason)

創建要在執行重啟操作時使用的RebootDeviceAction

IRunUtil createRunUtil ()
void doAdbReboot ( NativeDevice.RebootMode rebootMode, String reason)

執行 adb 重啟。

void ensureRuntimePermissionSupported ()

如果不支持運行時權限,則拋出異常的輔助方法

int getApiLevelSafe ()
ITestLogger getLogger ()
IRunUtil getRunUtil ()

獲取要使用的RunUtil實例。

void initializeConnection ( IBuildInfo info, MultiMap <String, String> attributes)
String internalGetProperty (String propName, String fastbootVar, String description)

默認情況下從 ddmlib 緩存中獲取設備屬性,然後根據設備是否處於 Fastboot 狀態回退到 `adb shell getprop` 或 `fastboot getvar`。

boolean isInRebootCallback ()

返回當前是否正在執行重啟回調。

boolean isNewer (File localFile, IFileEntry entry)

如果本地文件比遠程文件更新,則返回true

void notifyRebootEnded ()

通知所有IDeviceActionReceiver關於重啟結束事件。

void notifyRebootStarted ()

通知所有IDeviceActionReceiver關於重啟開始事件。

boolean performDeviceAction (String actionDescription, NativeDevice.DeviceAction action, int retryAttempts)

在此設備上執行操作。

void postAdbReboot ()

重啟後可能執行的額外操作。

void prePostBootSetup ()

允許每種設備類型(AndroidNativeDevice、TestDevice)為特定的啟動後設置覆蓋此方法。

boolean pullFileInternal (String remoteFilePath, File localFile)
void setClock (Clock clock)

設置要使用的時鐘實例。

void setMicrodroidProcess (Process process)

將 TestDevice 標記為微型機器人並設置其 CID。

void setTestDeviceOptions ( deviceOptions) setTestDeviceOptions ( deviceOptions)
CommandResult simpleFastbootCommand (long timeout, envVarMap, String[] fullCmd) simpleFastbootCommand (long timeout, envVarMap, String[] fullCmd)

使用環境變量執行簡單的 fastboot 命令並報告命令的狀態。

CommandResult simpleFastbootCommand (long timeout, String[] fullCmd)

執行一個簡單的 fastboot 命令並報告命令的狀態。

boolean waitForDeviceNotAvailable (String operationDesc, long time)

等待設備不可用(停止向 adb 報告)。

常量

INVALID_USER_ID

public static final int INVALID_USER_ID

為任何無效/未找到的用戶 ID 返回的值:UserHandle 定義了 -10000 值

常數值:-10000 (0xffffd8f0)

MAX_HOST_DEVICE_TIME_OFFSET

protected static final long MAX_HOST_DEVICE_TIME_OFFSET

常量值:5000 (0x0000000000001388)

MAX_RETRY_ATTEMPTS 次

protected static final int MAX_RETRY_ATTEMPTS

命令重試嘗試執行的默認次數

常量值:2 (0x00000002)

領域

SD卡

protected static final String SD_CARD

STORAGE_EMULATED

protected static final String STORAGE_EMULATED

選項

protected TestDeviceOptions mOptions

狀態監視器

protected final IDeviceStateMonitor mStateMonitor

公共構造函數

本地設備

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

創建一個TestDevice

參數
device IDevice :關聯的IDevice

stateMonitor IDeviceStateMonitor :要使用的IDeviceStateMonitor機制

allocationMonitor IDeviceMonitor :通知分配狀態更改的IDeviceMonitor 。可以為空

公共方法

可以切換到無頭系統用戶

public boolean canSwitchToHeadlessSystemUser ()

返回是否允許切換到無頭 SYSTEM 用戶。

退貨
boolean

投擲
DeviceNotAvailableException

檢查 ApiLevelAgainstNextRelease

public boolean checkApiLevelAgainstNextRelease (int strictMinLevel)

在給定最低支持級別的情況下,檢查當前是否支持某個功能。在提升 API 級別之前,此方法考慮了尚未發布的功能。

參數
strictMinLevel int :支持該功能的嚴格最小可能級別。

退貨
boolean如果支持該級別,則為真。否則為假。

投擲
DeviceNotAvailableException

檢查連通性

public boolean checkConnectivity ()

檢查設備是否具有網絡連接。

退貨
boolean如果設備具有有效的網絡連接, true ,否則為false

投擲
DeviceNotAvailableException

清除錯誤對話框

public boolean clearErrorDialogs ()

嘗試關閉當前顯示在設備 UI 上的任何錯誤對話框。

退貨
boolean如果不存在對話框或對話框已成功清除, true 。否則為false

投擲
DeviceNotAvailableException

清除上次連接的 Wifi 網絡

public void clearLastConnectedWifiNetwork ()

清除上次連接的 wifi 網絡。這應該在開始新調用時調用,以避免在設備重啟後連接到先前測試中使用的 wifi 網絡。

清除日誌貓

public void clearLogcat ()

刪除任何累積的 logcat 數據。

這對於您想要確保ITestDevice#getLogcat()僅返回在特定點之後生成的日誌數據(例如在刷新新設備構建之後等)的情況很有用。

連接到 Wifi 網絡

public boolean connectToWifiNetwork ( wifiSsidToPsk, 
                boolean scanSsid)

連接到 wifi 網絡。

打開 wifi 並阻止,直到與 wifiSsidToPsk 地圖中給出的 wifi 網絡之一建立成功連接。建立連接後,實例將在每次重新啟動後嘗試恢復連接,直到調用ITestDevice#disconnectFromWifi()ITestDevice#clearLastConnectedWifiNetwork()為止。

參數
wifiSsidToPsk :wifi SSID 到密碼的映射。

scanSsid boolean :是否為此網絡掃描隱藏的 SSID。

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

連接到 Wifi 網絡

public boolean connectToWifiNetwork (String wifiSsid, 
                String wifiPsk)

連接到 wifi 網絡。

打開 wifi 並阻止,直到成功連接到指定的 wifi 網絡。建立連接後,實例將在每次重新啟動後嘗試恢復連接,直到調用ITestDevice#disconnectFromWifi()ITestDevice#clearLastConnectedWifiNetwork()為止。

參數
wifiSsid String : 要連接的 wifi ssid

wifiPsk String : PSK 密碼,如果未加密則為 null

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

連接到 Wifi 網絡

public boolean connectToWifiNetwork ( wifiSsidToPsk)

連接到 wifi 網絡。

打開 wifi 並阻止,直到與 wifiSsidToPsk 地圖中給出的 wifi 網絡之一建立成功連接。建立連接後,實例將在每次重啟後嘗試恢復連接,直到ITestDevice#disconnectFromWifi()ITestDevice#clearLastConnectedWifiNetwork()被調用。f

參數
wifiSsidToPsk :wifi SSID 到密碼的映射。

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

連接到 Wifi 網絡

public boolean connectToWifiNetwork (String wifiSsid, 
                String wifiPsk, 
                boolean scanSsid)

連接到 wifi 網絡。

打開 wifi 並阻止,直到成功連接到指定的 wifi 網絡。建立連接後,實例將在每次重新啟動後嘗試恢復連接,直到調用ITestDevice#disconnectFromWifi()ITestDevice#clearLastConnectedWifiNetwork()為止。

參數
wifiSsid String : 要連接的 wifi ssid

wifiPsk String : PSK 密碼,如果未加密則為 null

scanSsid boolean : 是否為此網絡掃描隱藏的 SSID。

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

connectToWifiNetworkIfNeeded

public boolean connectToWifiNetworkIfNeeded (String wifiSsid, 
                String wifiPsk, 
                boolean scanSsid)

connectToWifiNetwork(String, String)的一種變體,僅當設備當前沒有網絡連接時才連接。

參數
scanSsid boolean : 是否為此網絡掃描隱藏的 SSID

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

connectToWifiNetworkIfNeeded

public boolean connectToWifiNetworkIfNeeded (String wifiSsid, 
                String wifiPsk)

connectToWifiNetwork(String, String)的一種變體,僅當設備當前沒有網絡連接時才連接。

退貨
boolean如果成功連接到 wifi 網絡,則為true 。否則為false

投擲
DeviceNotAvailableException

創建用戶

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

使用給定名稱和提供的標誌創建用戶

參數
name String : 要在設備上創建的用戶

guest boolean :在創建期間啟用用戶標誌 --guest

ephemeral boolean :在創建期間啟用用戶標誌 --ephemeral

退貨
int創建的用戶id

投擲
DeviceNotAvailableException

創建用戶

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

創建用戶

public int createUser (String name)

創建一個具有給定名稱和默認標誌 0 的用戶。

參數
name String : 要在設備上創建的用戶

退貨
int創建的用戶 ID 的整數

投擲
DeviceNotAvailableException

createUserNoThrow

public int createUserNoThrow (String name)

創建一個具有給定名稱和默認標誌 0 的用戶。

參數
name String : 要在設備上創建的用戶

退貨
int創建的用戶 ID 的整數或 -1 表示錯誤。

投擲
DeviceNotAvailableException

刪除文件

public void deleteFile (String deviceFilePath)

用於刪除設備上的文件或目錄的輔助方法。

參數
deviceFilePath String : 文件在設備上的絕對路徑。

投擲
DeviceNotAvailableException

註銷DeviceActionReceiver

public void deregisterDeviceActionReceiver (IDeviceActionReceiver deviceActionReceiver)

刪除已註冊的IDeviceActionReceiver

參數
deviceActionReceiver IDeviceActionReceiver :將被刪除的IDeviceActionReceiver

設備軟重啟

public boolean deviceSoftRestarted (ProcessInfo prevSystemServerProcess)

通過將當前 system_server 與之前的 system_server ProcessInfo進行比較來檢查設備是否軟重啟的輔助方法。使用getProcessByName(String)獲取ProcessInfo

參數
prevSystemServerProcess ProcessInfo :之前的system_server進程ProcessInfo

退貨
boolean如果設備軟重啟true

投擲
DeviceNotAvailableException

deviceSoftRestartedSince

public boolean deviceSoftRestartedSince (long utcEpochTime, 
                TimeUnit timeUnit)

檢查設備是否從設備紀元以來的 UTC 時間及其ERROR(/TimeUnit)軟重啟的輔助方法。軟重啟是指 system_server 在設備硬重啟之外重啟(例如:請求重啟)。可以通過方法getDeviceDate()獲取以毫秒為單位的當前設備 utcEpochTime。

參數
utcEpochTime long :自紀元以來以秒為單位的設備時間。

timeUnit TimeUnit :給定 utcEpochTime 的時間單位TimeUnit

退貨
boolean如果設備軟重啟true

投擲
DeviceNotAvailableException

禁用 AdbRoot

public boolean disableAdbRoot ()

關閉 adb root。

禁用 adb root 可能會導致設備與 adb 斷開連接。此方法將阻塞,直到設備可用。

退貨
boolean如果成功則為true

投擲
DeviceNotAvailableException

禁用鍵盤鎖

public void disableKeyguard ()

嘗試禁用鍵盤鎖。

首先等待輸入調度準備就緒,這發生在設備報告 BOOT_COMPLETE 的同時,顯然是異步的,因為當前框架實現偶爾會出現競爭條件。然後發送命令以關閉鍵盤鎖(僅適用於非安全鍵盤鎖)

投擲
DeviceNotAvailableException

禁用網絡監視器

public boolean disableNetworkMonitor ()

禁用設備上的網絡監控。

退貨
boolean如果成功禁用監視,則為true 。如果失敗則false

投擲
DeviceNotAvailableException

斷開與 Wifi 的連接

public boolean disconnectFromWifi ()

斷開與 wifi 網絡的連接。

從已知網絡列表中刪除所有網絡並禁用 wifi。

退貨
boolean如果成功斷開與 wifi 網絡的連接, true 。如果斷開連接失敗則為false

投擲
DeviceNotAvailableException

文件是否存在

public boolean doesFileExist (String deviceFilePath, 
                int userId)

確定給定用戶設備上的文件是否存在的輔助方法。

參數
deviceFilePath String : 要檢查的設備上文件的絕對路徑

userId int :用於檢查文件是否存在的用戶 ID

退貨
boolean如果文件存在true ,否則為false

投擲
DeviceNotAvailableException

文件是否存在

public boolean doesFileExist (String deviceFilePath)

確定設備上的文件是否存在的輔助方法。

參數
deviceFilePath String : 要檢查的設備上文件的絕對路徑

退貨
boolean如果文件存在true ,否則為false

投擲
DeviceNotAvailableException

轉儲堆

public File dumpHeap (String process, 
                String devicePath)

嘗試從 system_server 轉儲堆。清理轉儲文件是調用者的責任。

參數
process String :要轉儲到的設備進程的名稱。

devicePath String :設備上放置轉儲的路徑。這必須是權限允許的位置。

退貨
File包含報告的ERROR(/File) 。如果失敗則為空。

投擲
DeviceNotAvailableException

啟用 AdbRoot

public boolean enableAdbRoot ()

打開 adb root。如果“enable-root”設置為“false”,將記錄一條消息並在不啟用 root 的情況下返回。

啟用 adb root 可能會導致設備與 adb 斷開連接。此方法將阻塞,直到設備可用。

退貨
boolean如果成功則為true

投擲
DeviceNotAvailableException

啟用網絡監控器

public boolean enableNetworkMonitor ()

在設備上啟用網絡監控。

退貨
boolean如果成功啟用監控,則為true 。如果失敗則false

投擲
DeviceNotAvailableException

執行 Adb 命令

public String executeAdbCommand (long timeout, 
                String... cmdArgs)

將 adb 命令作為具有指定超時的系統命令執行的輔助方法。

executeShellCommand(String)應盡可能改用,因為該方法可提供更好的故障檢測和性能。

參數
timeout long :設備被認為無響應之前的時間(以毫秒為單位),0L 表示沒有超時

cmdArgs String :要運行的 adb 命令和參數

退貨
String來自命令的標準輸出。如果命令執行失敗則為null

投擲
DeviceNotAvailableException

執行 Adb 命令

public String executeAdbCommand (long timeout, 
                 envMap, 
                String... cmdArgs)

將 adb 命令作為具有指定超時的系統命令執行的輔助方法。

executeShellCommand(String)應盡可能改用,因為該方法可提供更好的故障檢測和性能。

參數
timeout long :設備被認為無響應之前的時間(以毫秒為單位),0L 表示沒有超時

envMap :為命令設置的環境

cmdArgs String :要運行的 adb 命令和參數

退貨
String來自命令的標準輸出。如果命令執行失敗則為null

投擲
DeviceNotAvailableException

執行 Adb 命令

public String executeAdbCommand (String... cmdArgs)

將 adb 命令作為系統命令執行的輔助方法。

executeShellCommand(String)應盡可能改用,因為該方法可提供更好的故障檢測和性能。

參數
cmdArgs String :要運行的 adb 命令和參數

退貨
String來自命令的標準輸出。如果命令執行失敗則為null

投擲
DeviceNotAvailableException

執行Fastboot命令

public CommandResult executeFastbootCommand (String... cmdArgs)

將 fastboot 命令作為系統命令執行的輔助方法,默認超時為 2 分鐘。

預計在設備已經處於快速啟動模式時使用。

參數
cmdArgs String :要運行的 fastboot 命令和參數

退貨
CommandResult包含命令輸出的 CommandResult

投擲
DeviceNotAvailableException

執行Fastboot命令

public CommandResult executeFastbootCommand (long timeout, 
                String... cmdArgs)

將 fastboot 命令作為系統命令執行的輔助方法。

預計在設備已經處於快速啟動模式時使用。

參數
timeout long :命令過期前的時間(以毫秒為單位)

cmdArgs String :要運行的 fastboot 命令和參數

退貨
CommandResult包含命令輸出的 CommandResult

投擲
DeviceNotAvailableException

executeLongFastbootCommand

public CommandResult executeLongFastbootCommand (String... cmdArgs)

將長時間運行的 fastboot 命令作為系統命令執行的輔助方法。

executeFastbootCommand(String)相同,只是使用了更長的超時時間。

參數
cmdArgs String :要運行的 fastboot 命令和參數

Returns
CommandResult the CommandResult containing output of command

Throws
DeviceNotAvailableException

executeLongFastbootCommand

public CommandResult executeLongFastbootCommand ( envVarMap, 
                String... cmdArgs)

Helper method which executes a long running fastboot command as a system command with system environment variables.

Identical to executeFastbootCommand(String) except uses a longer timeout.

Parameters
envVarMap : the system environment variables that the fastboot command run with

cmdArgs String : the fastboot command and arguments to run

Returns
CommandResult the CommandResult containing output of command

Throws
DeviceNotAvailableException

executeShellCommand

public String executeShellCommand (String command)

Helper method which executes a adb shell command and returns output as a ERROR(/String) .

Parameters
command String : the adb shell command to run

Returns
String the shell output

Throws
DeviceNotAvailableException

executeShellCommand

public void executeShellCommand (String command, 
                IShellOutputReceiver receiver, 
                long maxTimeToOutputShellResponse, 
                TimeUnit timeUnit, 
                int retryAttempts)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
command String : the adb shell command to run

receiver IShellOutputReceiver : the IShellOutputReceiver to direct shell output to.

maxTimeToOutputShellResponse long : the maximum amount of time during which the command is allowed to not output any response; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

retryAttempts int : the maximum number of times to retry command if it fails due to a exception. DeviceNotResponsiveException will be thrown if retryAttempts are performed without success.

Throws
DeviceNotAvailableException

executeShellCommand

public void executeShellCommand (String command, 
                IShellOutputReceiver receiver, 
                long maxTimeoutForCommand, 
                long maxTimeToOutputShellResponse, 
                TimeUnit timeUnit, 
                int retryAttempts)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
command String : the adb shell command to run

receiver IShellOutputReceiver : the IShellOutputReceiver to direct shell output to.

maxTimeoutForCommand long : the maximum timeout for the command to complete; unit as specified in timeUnit

maxTimeToOutputShellResponse long : the maximum amount of time during which the command is allowed to not output any response; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

retryAttempts int : the maximum number of times to retry command if it fails due to a exception. DeviceNotResponsiveException will be thrown if retryAttempts are performed without success.

Throws
DeviceNotAvailableException

executeShellCommand

public void executeShellCommand (String command, 
                IShellOutputReceiver receiver)

Executes the given adb shell command, retrying multiple times if command fails.

A simpler form of executeShellCommand(String, com.android.ddmlib.IShellOutputReceiver, long, TimeUnit, int) with default values.

Parameters
command String : the adb shell command to run

receiver IShellOutputReceiver : the IShellOutputReceiver to direct shell output to.

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd)

Helper method which executes a adb shell command and returns the results as a CommandResult properly populated with the command status output, stdout and stderr.

Parameters
cmd String : The command that should be run.

Returns
CommandResult The result in CommandResult .

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                OutputStream pipeToOutput)

Helper method which executes an adb shell command and returns the results as a CommandResult properly populated with the command status output and stderr. stdout is directed to the specified stream.

Parameters
cmd String : The command that should be run.

pipeToOutput OutputStream : ERROR(/OutputStream) where the std output will be redirected, or null.

Returns
CommandResult The result in CommandResult .

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                File pipeAsInput)

Helper method which executes an adb shell command and returns the results as a CommandResult properly populated with the command status output, stdout and stderr.

Parameters
cmd String : The command that should be run.

pipeAsInput File : A ERROR(/File) that will be piped as input to the command, or null.

Returns
CommandResult The result in CommandResult .

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                long maxTimeoutForCommand, 
                TimeUnit timeUnit, 
                int retryAttempts)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
cmd String : the adb shell command to run

maxTimeoutForCommand long : the maximum timeout for the command to complete; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

retryAttempts int : the maximum number of times to retry command if it fails due to a exception. DeviceNotResponsiveException will be thrown if retryAttempts are performed without success.

Returns
CommandResult

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                long maxTimeoutForCommand, 
                TimeUnit timeUnit)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
cmd String : the adb shell command to run

maxTimeoutForCommand long : the maximum timeout for the command to complete; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

Returns
CommandResult

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                File pipeAsInput, 
                OutputStream pipeToOutput, 
                long maxTimeoutForCommand, 
                TimeUnit timeUnit, 
                int retryAttempts)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
cmd String : the adb shell command to run

pipeAsInput File : A ERROR(/File) that will be piped as input to the command, or null.

pipeToOutput OutputStream : ERROR(/OutputStream) where the std output will be redirected, or null.

maxTimeoutForCommand long : the maximum timeout for the command to complete; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

retryAttempts int : the maximum number of times to retry command if it fails due to a exception. DeviceNotResponsiveException will be thrown if retryAttempts are performed without success.

Returns
CommandResult

Throws
DeviceNotAvailableException

executeShellV2Command

public CommandResult executeShellV2Command (String cmd, 
                File pipeAsInput, 
                OutputStream pipeToOutput, 
                OutputStream pipeToError, 
                long maxTimeoutForCommand, 
                TimeUnit timeUnit, 
                int retryAttempts)

Executes a adb shell command, with more parameters to control command behavior.

Parameters
cmd String : the adb shell command to run

pipeAsInput File : A ERROR(/File) that will be piped as input to the command, or null.

pipeToOutput OutputStream : ERROR(/OutputStream) where the std output will be redirected, or null.

pipeToError OutputStream : ERROR(/OutputStream) where the std error will be redirected, or null.

maxTimeoutForCommand long : the maximum timeout for the command to complete; unit as specified in timeUnit

timeUnit TimeUnit : unit for maxTimeToOutputShellResponse

retryAttempts int : the maximum number of times to retry command if it fails due to a exception. DeviceNotResponsiveException will be thrown if retryAttempts are performed without success.

Returns
CommandResult

Throws
DeviceNotAvailableException

fastbootWipePartition

public CommandResult fastbootWipePartition (String partition)

Helper method which wipes a partition for the device.

If getUseFastbootErase() is true , then fastboot erase will be used to wipe the partition. The device must then create a filesystem the next time the device boots. Otherwise, fastboot format is used which will create a new filesystem on the device.

Expected to be used when device is already in fastboot mode.

Parameters
partition String : the partition to wipe

Returns
CommandResult the CommandResult containing output of command

Throws
DeviceNotAvailableException

getActiveApexes

public  getActiveApexes ()

Fetch the information about APEXes activated on the device.

Returns
ERROR(/Set) of ApexInfo currently activated on the device

Throws
DeviceNotAvailableException

getAllSettings

public  getAllSettings (String namespace)

Return key value pairs of requested namespace.

Parameters
namespace String : must be one of {"system", "secure", "global"}

Returns
the map of key value pairs. Null if namespace is not supported.

Throws
DeviceNotAvailableException

getAllocationState

public DeviceAllocationState getAllocationState ()

Return the current allocation state of device

Returns
DeviceAllocationState

getAndroidId

public String getAndroidId (int userId)

Find and return the android-id associated to a userId, null if not found.

Parameters
userId int

Returns
String

Throws
DeviceNotAvailableException

getAndroidIds

public  getAndroidIds ()

Create a Map of android ids found matching user ids. There is no insurance that each user id will found an android id associated in this function so some user ids may match null.

Returns
Map of android ids found matching user ids.

Throws
DeviceNotAvailableException

getApiLevel

public int getApiLevel ()

Get the device API Level. Defaults to UNKNOWN_API_LEVEL .

Returns
int an integer indicating the API Level of device

Throws
DeviceNotAvailableException

getAppPackageInfo

public PackageInfo getAppPackageInfo (String packageName)

Fetch information about a package installed on device.

Parameters
packageName String

Returns
PackageInfo the PackageInfo or null if information could not be retrieved

Throws
DeviceNotAvailableException

getAppPackageInfos

public  getAppPackageInfos ()

Fetch information of packages installed on the device.

Returns
ERROR(/List) of PackageInfo s installed on the device.

Throws
DeviceNotAvailableException

getBasebandVersion

public String getBasebandVersion ()

Convenience method to get baseband (radio) version of this device. Getting the radio version is device specific, so it might not return the correct information for all devices. This method relies on the gsm.version.baseband propery to return the correct version information. This is not accurate for some CDMA devices and the version returned here might not match the version reported from fastboot and might not return the version for the CDMA radio. TL;DR this method only reports accurate version if the gsm.version.baseband property is the same as the version returned by fastboot getvar version-baseband .

Returns
String the ERROR(/String) baseband version or null if it cannot be determined (device has no radio or version string cannot be read)

Throws
DeviceNotAvailableException

getBattery

public Integer getBattery ()

Returns the current battery level of a device or Null if battery level unavailable.

Returns
Integer

getBooleanProperty

public boolean getBooleanProperty (String name, 
                boolean defaultValue)

Returns boolean value of the given property.

Parameters
name String : the property name

defaultValue boolean : default value to return if property is empty or doesn't exist.

Returns
boolean true if the property has value "1" , "y" , "yes" , "on" , or "true" , false if the property has value of "0" , "n" , "no" , "off" , "false" , or defaultValue otherwise.

Throws
DeviceNotAvailableException

getBootHistory

public  getBootHistory ()

Helper method collects the boot history map with boot time and boot reason.

Returns
Map of boot time (UTC time in second since Epoch) and boot reason

Throws
DeviceNotAvailableException

getBootHistorySince

public  getBootHistorySince (long utcEpochTime, 
                TimeUnit timeUnit)

Helper method collects the boot history map with boot time and boot reason since the given time since epoch from device and the time unit specified. The current device utcEpochTime in Millisecond can be obtained by method getDeviceDate() .

Parameters
utcEpochTime long : the device time since Epoch.

timeUnit TimeUnit : the time unit TimeUnit .

Returns
Map of boot time (UTC time in second since Epoch) and boot reason

Throws
DeviceNotAvailableException

getBootloaderVersion

public String getBootloaderVersion ()

Convenience method to get the bootloader version of this device.

Will attempt to retrieve bootloader version from the device's current state. (ie if device is in fastboot mode, it will attempt to retrieve version from fastboot)

Returns
String the ERROR(/String) bootloader version or null if it cannot be found

Throws
DeviceNotAvailableException

getBugreport

public InputStreamSource getBugreport ()

Retrieves a bugreport from the device.

The implementation of this is guaranteed to continue to work on a device without an sdcard (or where the sdcard is not yet mounted).

Returns
InputStreamSource An InputStreamSource which will produce the bugreport contents on demand. In case of failure, the InputStreamSource will produce an empty ERROR(/InputStream) .

getBugreportz

public InputStreamSource getBugreportz ()

Retrieves a bugreportz from the device. Zip format bugreport contains the main bugreport and other log files that are useful for debugging.

Only supported for 'adb version' > 1.0.36

Returns
InputStreamSource a InputStreamSource of the zip file containing the bugreportz, return null in case of failure.

getBuildAlias

public String getBuildAlias ()

Retrieve the alias of the build that the device is currently running.

Build alias is usually a more readable string than build id (typically a number for Nexus builds). For example, final Android 4.2 release has build alias JDQ39, and build id 573038

Returns
String the build alias or fall back to build id if it could not be retrieved

Throws
DeviceNotAvailableException

getBuildFlavor

public String getBuildFlavor ()

Retrieve the build flavor for the device.

Returns
String the build flavor or null if it could not be retrieved

Throws
DeviceNotAvailableException

getBuildId

public String getBuildId ()

Retrieve the build the device is currently running.

Returns
String the build id or IBuildInfo#UNKNOWN_BUILD_ID if it could not be retrieved

Throws
DeviceNotAvailableException

getBuildSigningKeys

public String getBuildSigningKeys ()

Returns the key type used to sign the device image

Typically Android devices may be signed with test-keys (like in AOSP) or release-keys (controlled by individual device manufacturers)

Returns
String The signing key if found, null otherwise.

Throws
DeviceNotAvailableException

getCachedDeviceDescriptor

public DeviceDescriptor getCachedDeviceDescriptor ()

Returns a cached DeviceDescriptor if the device is allocated, otherwise returns the current DeviceDescriptor .

Returns
DeviceDescriptor

getCachedDeviceDescriptor

public DeviceDescriptor getCachedDeviceDescriptor (boolean shortDescriptor)

Returns a cached DeviceDescriptor if the device is allocated, otherwise returns the current DeviceDescriptor .

Parameters
shortDescriptor boolean : Whether or not to limit descriptor to bare minimum info

Returns
DeviceDescriptor

getChildren

public String[] getChildren (String path)

Alternative to using IFileEntry that sometimes won't work because of permissions.

Parameters
path String : is the path on the device where to do the search

Returns
String[] Array of string containing all the file in a path on the device.

Throws
DeviceNotAvailableException

getConnection

public AbstractConnection getConnection ()

The current connection associated with the device.

Returns
AbstractConnection

getCurrentFoldableState

public DeviceFoldableState getCurrentFoldableState ()

Returns the current foldable state of the device or null if some issues occurred.

Returns
DeviceFoldableState

Throws
DeviceNotAvailableException

getCurrentUser

public int getCurrentUser ()

Return the id of the current running user. In case of error, return -10000.

Returns
int

Throws
DeviceNotAvailableException

getDeviceClass

public String getDeviceClass ()

Get the device class.

Returns
String the ERROR(/String) device class.

getDeviceDate

public long getDeviceDate ()

Return the date of the device in millisecond since epoch.

Returns
long the date of the device in epoch format.

Throws
DeviceNotAvailableException

getDeviceDescriptor

public DeviceDescriptor getDeviceDescriptor ()

Return a DeviceDescriptor from the device information to get info on it without passing the actual device object.

Returns
DeviceDescriptor

getDeviceDescriptor

public DeviceDescriptor getDeviceDescriptor (boolean shortDescriptor)

Return a DeviceDescriptor from the device information to get info on it without passing the actual device object.

Parameters
shortDescriptor boolean : Whether or not to limit descriptor to bare minimum info

Returns
DeviceDescriptor

getDeviceState

public TestDeviceState getDeviceState ()

Get the device's state.

Returns
TestDeviceState

getDeviceTimeOffset

public long getDeviceTimeOffset (Date date)

Helper to get the time difference between the device and a given ERROR(/Date) . Use Epoch time internally.

Parameters
date Date

Returns
long the difference in milliseconds

Throws
DeviceNotAvailableException

getEmulatorOutput

public InputStreamSource getEmulatorOutput ()

Get the stream of emulator stdout and stderr

Returns
InputStreamSource emulator output

getEmulatorProcess

public Process getEmulatorProcess ()

Return the ERROR(/Process) corresponding to this emulator.

Returns
Process the ERROR(/Process) or null

getExecuteShellCommandLog

public final File getExecuteShellCommandLog ()

The log that contains all the executeShellCommand(String) logs.

Returns
File

getExternalStoreFreeSpace

public long getExternalStoreFreeSpace ()

Helper method to determine amount of free space on device external storage.

Returns
long the amount of free space in KB

Throws
DeviceNotAvailableException

getFastbootPath

public String getFastbootPath ()

Returns the path of the fastboot binary being used. Still requires isFastbootEnabled() to be true, to have fastboot functions enabled.

Returns
String

getFastbootProductType

public String getFastbootProductType ()

Convenience method to get the product type of this device when its in fastboot mode.

This method should only be used if device should be in fastboot. Its a bit safer variant than the generic getProductType() method in this case, because ITestDevice will know to recover device into fastboot if device is in incorrect state or is unresponsive.

Returns
String the ERROR(/String) product type name or null if it cannot be determined

Throws
DeviceNotAvailableException

getFastbootProductVariant

public String getFastbootProductVariant ()

Convenience method to get the product type of this device when its in fastboot mode.

This method should only be used if device should be in fastboot. Its a bit safer variant than the generic getProductType() method in this case, because ITestDevice will know to recover device into fastboot if device is in incorrect state or is unresponsive.

Returns
String the ERROR(/String) product type name or null if it cannot be determined

Throws
DeviceNotAvailableException

getFastbootSerialNumber

public String getFastbootSerialNumber ()

Returns the fastboot mode serial number.

Returns
String

getFastbootVariable

public String getFastbootVariable (String variableName)

Retrieve the given fastboot variable value from the device.

Parameters
variableName String : the variable name

Returns
String the property value or null if it does not exist

Throws
DeviceNotAvailableException

getFastbootVersion

public String getFastbootVersion ()

Returns the version string of the fastboot binary being used. Or null if something goes wrong.

Returns
String

getFileEntry

public IFileEntry getFileEntry (String path)

Retrieve a reference to a remote file on device.

Parameters
path String : the file path to retrieve. Can be an absolute path or path relative to '/'. (ie both "/system" and "system" syntax is supported)

Returns
IFileEntry the IFileEntry or null if file at given path cannot be found

Throws
DeviceNotAvailableException

getFileEntry

public IFileEntry getFileEntry (FileListingService.FileEntry entry)

Unofficial helper to get a FileEntry from a non-root path. FIXME: Refactor the FileEntry system to have it available from any path. (even non root).

Parameters
entry FileListingService.FileEntry : a FileEntry not necessarily root as Ddmlib requires.

Returns
IFileEntry a FileEntryWrapper representing the FileEntry.

Throws
com.android.tradefed.device.DeviceNotAvailableException
DeviceNotAvailableException

getFoldableStates

public  getFoldableStates ()

Returns the list of foldable states on the device. Can be obtained with "cmd device_state print-states".

Returns

Throws
DeviceNotAvailableException

getIDevice

public IDevice getIDevice ()

Returns a reference to the associated ddmlib IDevice .

A new IDevice may be allocated by DDMS each time the device disconnects and reconnects from adb. Thus callers should not keep a reference to the IDevice , because that reference may become stale.

Returns
IDevice the IDevice

getInstalledPackageNames

public  getInstalledPackageNames ()

Fetch the application package names present on the device.

Returns
ERROR(/Set) of ERROR(/String) package names currently installed on the device.

Throws
DeviceNotAvailableException

getIntProperty

public long getIntProperty (String name, 
                long defaultValue)

Returns integer value of the given property from the device.

Parameters
name String : the property name

defaultValue long : default value to return if property is empty or doesn't exist.

Returns
long the property value or defaultValue if the property is empty, doesn't exist, or doesn't have an integer value.

Throws
DeviceNotAvailableException

getIpAddress

public String getIpAddress ()

Gets the device's IP address.

Returns
String the device's IP address, or null if device has no IP address

Throws
DeviceNotAvailableException

getKeyguardState

public KeyguardControllerState getKeyguardState ()

Return an object to get the current state of the keyguard or null if not supported.

Returns
KeyguardControllerState a KeyguardControllerState containing a snapshot of the state of the keyguard and returns Null if the Keyguard query is not supported.

Throws
DeviceNotAvailableException

getLastExpectedRebootTimeMillis

public long getLastExpectedRebootTimeMillis ()

Returns the last time Tradefed APIs triggered a reboot in milliseconds since EPOCH as returned by ERROR(/System#currentTimeMillis()) .

Returns
long

getLaunchApiLevel

public int getLaunchApiLevel ()

Get the device's first launched API Level. Defaults to UNKNOWN_API_LEVEL .

Returns
int an integer indicating the first launched API Level of device

Throws
DeviceNotAvailableException

getLogcat

public InputStreamSource getLogcat ()

Grabs a snapshot stream of the logcat data.

Works in two modes:

  • If the logcat is currently being captured in the background, will return up to TestDeviceOptions.getMaxLogcatDataSize() bytes of the current contents of the background logcat capture
  • Otherwise, will return a static dump of the logcat data if device is currently responding

    Returns
    InputStreamSource

  • getLogcat

    public InputStreamSource getLogcat (int maxBytes)

    Grabs a snapshot stream of the last maxBytes of captured logcat data.

    Useful for cases when you want to capture frequent snapshots of the captured logcat data without incurring the potentially big disk space penalty of getting the entire getLogcat() snapshot.

    Parameters
    maxBytes int : the maximum amount of data to return. Should be an amount that can comfortably fit in memory

    Returns
    InputStreamSource

    getLogcatDump

    public InputStreamSource getLogcatDump ()

    Get a dump of the current logcat for device. Unlike getLogcat() , this method will always return a static dump of the logcat.

    Has the disadvantage that nothing will be returned if device is not reachable.

    Returns
    InputStreamSource a InputStreamSource of the logcat data. An empty stream is returned if fail to capture logcat data.

    getLogcatSince

    public InputStreamSource getLogcatSince (long date)

    Grabs a snapshot stream of captured logcat data starting the date provided. The time on the device should be used getDeviceDate() .

    Parameters
    date long : in millisecond since epoch format of when to start the snapshot until present. (can be be obtained using 'date +%s')

    Returns
    InputStreamSource

    getMacAddress

    public String getMacAddress ()

    Returns the MAC address of the device, null if it fails to query from the device.

    Returns
    String

    getMainUserId

    public Integer getMainUserId ()

    Returns the main user id.

    Returns
    Integer the userId of the main user if there is one, and null if there is no main user.

    Throws
    DeviceNotAvailableException

    getMainlineModuleInfo

    public  getMainlineModuleInfo ()

    Get the information about the mainline modules installed on the device.

    Returns
    ERROR(/Set) of ERROR(/String) mainline modules currently installed on the device.

    Throws
    DeviceNotAvailableException

    getMaxNumberOfRunningUsersSupported

    public int getMaxNumberOfRunningUsersSupported ()

    Get the maximum number of supported simultaneously running users. Defaults to 0.

    Returns
    int an integer indicating the number of simultaneously running users

    Throws
    DeviceNotAvailableException

    getMaxNumberOfUsersSupported

    public int getMaxNumberOfUsersSupported ()

    Get the maximum number of supported users. Defaults to 0.

    Returns
    int an integer indicating the number of supported users

    Throws
    DeviceNotAvailableException

    getMicrodroidProcess

    public Process getMicrodroidProcess ()

    Returns
    Process Returns the Process of the Microdroid VM. If TestDevice is not a Microdroid, returns null.

    getMonitor

    public IDeviceStateMonitor getMonitor ()

    Return the IDeviceStateMonitor associated with device.

    Returns
    IDeviceStateMonitor

    getMountPoint

    public String getMountPoint (String mountName)

    Returns a mount point.

    Queries the device directly if the cached info in IDevice is not available.

    TODO: move this behavior to IDevice#getMountPoint(String)

    Parameters
    mountName String : the name of the mount point

    Returns
    String the mount point or null

    getMountPointInfo

    public ITestDevice.MountPointInfo getMountPointInfo (String mountpoint)

    Returns a MountPointInfo corresponding to the specified mountpoint path, or null if that path has nothing mounted or otherwise does not appear in /proc/mounts as a mountpoint.

    Parameters
    mountpoint String

    Returns
    ITestDevice.MountPointInfo A ERROR(/List) of MountPointInfo containing the information in "/proc/mounts"

    Throws
    DeviceNotAvailableException

    getMountPointInfo

    public  getMountPointInfo ()

    Returns a parsed version of the information in /proc/mounts on the device

    Returns
    A ERROR(/List) of MountPointInfo containing the information in "/proc/mounts"

    Throws
    DeviceNotAvailableException

    getOptions

    public TestDeviceOptions getOptions ()

    Fetch the test options for the device.

    Returns
    TestDeviceOptions TestDeviceOptions related to the device under test.

    getPartitionFreeSpace

    public long getPartitionFreeSpace (String partition)

    Helper method to determine amount of free space on device partition.

    Parameters
    partition String

    Returns
    long the amount of free space in KB

    Throws
    DeviceNotAvailableException

    getPrimaryUserId

    public Integer getPrimaryUserId ()

    Returns the primary user id.

    Returns
    Integer the userId of the primary user if there is one, and null if there is no primary user.

    Throws
    DeviceNotAvailableException

    getProcessByName

    public ProcessInfo getProcessByName (String processName)

    Helper method runs the "pidof" and "stat" command and returns ProcessInfo object with PID and process start time of the given process.

    Parameters
    processName String : the proces name String.

    Returns
    ProcessInfo ProcessInfo of given processName

    Throws
    DeviceNotAvailableException

    getProcessPid

    public String getProcessPid (String process)

    Returns the pid of the service or null if something went wrong.

    Parameters
    process String : The proces name String.

    Returns
    String

    Throws
    DeviceNotAvailableException

    getProductType

    public String getProductType ()

    Convenience method to get the product type of this device.

    This method will work if device is in either adb or fastboot mode.

    Returns
    String the ERROR(/String) product type name. Will not be null

    Throws
    DeviceNotAvailableException

    getProductVariant

    public String getProductVariant ()

    Convenience method to get the product variant of this device.

    This method will work if device is in either adb or fastboot mode.

    Returns
    String the ERROR(/String) product variant name or null if it cannot be determined

    Throws
    DeviceNotAvailableException

    getProperty

    public String getProperty (String name)

    Retrieve the given property value from the device.

    Parameters
    name String : the property name

    Returns
    String the property value or null if it does not exist

    Throws
    DeviceNotAvailableException

    getRecoveryMode

    public ITestDevice.RecoveryMode getRecoveryMode ()

    Get the current recovery mode used for the device.

    Returns
    ITestDevice.RecoveryMode the current recovery mode used for the device.

    getScreenshot

    public InputStreamSource getScreenshot (String format)

    Grabs a screenshot from the device. Recommended to use getScreenshot(format) instead with JPEG encoding for smaller size

    Parameters
    format String : supported PNG, JPEG

    Returns
    InputStreamSource a InputStreamSource of the screenshot in format, or null if the screenshot was not successful.

    Throws
    DeviceNotAvailableException

    getScreenshot

    public InputStreamSource getScreenshot (long displayId)

    Grabs a screenshot from the device given display id. Format is PNG.

    TODO: extend the implementations above to support 'format' and 'rescale'

    Parameters
    displayId long : the display id of the screen to get screenshot from.

    Returns
    InputStreamSource a InputStreamSource of the screenshot in format, or null if the screenshot was not successful.

    Throws
    DeviceNotAvailableException

    getScreenshot

    public InputStreamSource getScreenshot (String format, 
                    boolean rescale)

    Grabs a screenshot from the device. Recommended to use getScreenshot(String) instead with JPEG encoding for smaller size.

    Parameters
    format String : supported PNG, JPEG

    rescale boolean : if screenshot should be rescaled to reduce the size of resulting image

    Returns
    InputStreamSource a InputStreamSource of the screenshot in format, or null if the screenshot was not successful.

    Throws
    DeviceNotAvailableException

    getScreenshot

    public InputStreamSource getScreenshot ()

    Grabs a screenshot from the device.

    Returns
    InputStreamSource a InputStreamSource of the screenshot in png format, or null if the screenshot was not successful.

    Throws
    DeviceNotAvailableException

    getSerialNumber

    public String getSerialNumber ()

    Convenience method to get serial number of this device.

    Returns
    String the ERROR(/String) serial number

    getSetting

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

    Return the value of the requested setting. namespace must be one of: {"system", "secure", "global"}

    Parameters
    userId int

    namespace String

    key String

    Returns
    String the value associated with the namespace:key of a user. Null if not found.

    Throws
    DeviceNotAvailableException

    getSetting

    public String getSetting (String namespace, 
                    String key)

    See getSetting(int, String, String) and performed on system user.

    Parameters
    namespace String

    key String

    Returns
    String

    Throws
    DeviceNotAvailableException

    getSimOperator

    public String getSimOperator ()

    Return the SIM card operator or null if not available or if device is not available.

    Returns
    String

    getSimState

    public String getSimState ()

    Return the SIM card state or null if not available or device is not available.

    Returns
    String

    getTombstones

    public  getTombstones ()

    Fetch and return the list of tombstones from the devices. Requires root.

    method is best-effort so if one tombstone fails to be pulled for any reason it will be missing from the list. Only a DeviceNotAvailableException will terminate the method early.

    Returns
    A list of tombstone files, empty if no tombstone.

    Throws
    DeviceNotAvailableException

    getTotalMemory

    public long getTotalMemory ()

    Returns total physical memory size in bytes or -1 in case of internal error

    Returns
    long

    getUninstallablePackageNames

    public  getUninstallablePackageNames ()

    Fetch the application package names that can be uninstalled. This is presently defined as non-system packages, and updated system packages.

    Returns
    ERROR(/Set) of uninstallable ERROR(/String) package names currently installed on the device.

    Throws
    DeviceNotAvailableException

    getUseFastbootErase

    public boolean getUseFastbootErase ()

    Get whether to use fastboot erase or fastboot format to wipe a partition on the device.

    Returns
    boolean true if fastboot erase will be used or false if fastboot format will be used.

    getUserFlags

    public int getUserFlags (int userId)

    Find and return the flags of a given user. Flags are defined in "android.content.pm.UserInfo" class in Android Open Source Project.

    Parameters
    userId int

    Returns
    int the flags associated with the userId provided if found, -10000 in any other cases.

    Throws
    DeviceNotAvailableException

    getUserInfos

    public  getUserInfos ()

    Gets the Map of useId to UserInfo on the device. Will throw DeviceRuntimeException if output from device is not as expected.

    Returns
    the list of UserInfo objects.

    Throws
    DeviceNotAvailableException

    getUserSerialNumber

    public int getUserSerialNumber (int userId)

    Return the serial number associated to the userId if found, -10000 in any other cases.

    Parameters
    userId int

    Returns
    int

    Throws
    DeviceNotAvailableException

    handleAllocationEvent

    public IManagedTestDevice.DeviceEventResponse handleAllocationEvent (DeviceEvent event)

    Process the given DeviceEvent . May transition device to new state. Will inform the IDeviceMonitor of any state transitions.

    Process the DeviceEvent, which may or may not transition this device to a new allocation state.

    Parameters
    event DeviceEvent

    Returns
    IManagedTestDevice.DeviceEventResponse

    hasFeature

    public boolean hasFeature (String feature)

    Check if a feature is available on a device.

    Parameters
    feature String : which format should be "feature: " or " " directly.

    Returns
    boolean True if feature is found, false otherwise.

    Throws
    DeviceNotAvailableException

    installPackage

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

    Install an Android package on device.

    Parameters
    packageFile File : the apk file to install

    reinstall boolean : true if a reinstall should be performed

    extraArgs String : optional extra arguments to pass. See 'adb shell pm -h' for available options.

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    installPackage

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

    Install an Android package on device.

    Note: Only use cases that requires explicit control of granting runtime permission at install time should call this function.

    Parameters
    packageFile File : the apk file to install

    reinstall boolean : true if a reinstall should be performed

    grantPermissions boolean : if all runtime permissions should be granted at install time

    extraArgs String : optional extra arguments to pass. See 'adb shell pm -h' for available options.

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    installPackageForUser

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

    Install an Android package on device for a given user.

    Parameters
    packageFile File : the apk file to install

    reinstall boolean : true if a reinstall should be performed

    userId int : the integer user id to install for.

    extraArgs String : optional extra arguments to pass. See 'adb shell pm -h' for available options.

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    installPackageForUser

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

    Install an Android package on device for a given user.

    Note: Only use cases that requires explicit control of granting runtime permission at install time should call this function.

    Parameters
    packageFile File : the apk file to install

    reinstall boolean : true if a reinstall should be performed

    grantPermissions boolean : if all runtime permissions should be granted at install time

    userId int : the integer user id to install for.

    extraArgs String : optional extra arguments to pass. See 'adb shell pm -h' for available options.

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    isAdbRoot

    public boolean isAdbRoot ()

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isAdbTcp

    public boolean isAdbTcp ()

    Returns
    boolean

    isAppEnumerationSupported

    public boolean isAppEnumerationSupported ()

    Check whether platform on device supports app enumeration

    Returns
    boolean True if app enumeration is supported, false otherwise

    Throws
    DeviceNotAvailableException

    isBypassLowTargetSdkBlockSupported

    public boolean isBypassLowTargetSdkBlockSupported ()

    Check whether platform on device supports bypassing low target sdk block on app installs

    Returns
    boolean True if bypass low target sdk block is supported, false otherwise

    Throws
    DeviceNotAvailableException

    isDeviceEncrypted

    public boolean isDeviceEncrypted ()

    Returns if the device is encrypted.

    Returns
    boolean true if the device is encrypted.

    Throws
    DeviceNotAvailableException

    isDirectory

    public boolean isDirectory (String path)

    Return True if the path on the device is a directory, false otherwise.

    Parameters
    path String

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isEnableAdbRoot

    public boolean isEnableAdbRoot ()

    Returns
    boolean true if adb root should be enabled on device

    isEncryptionSupported

    public boolean isEncryptionSupported ()

    Returns if encryption is supported on the device.

    Returns
    boolean true if the device supports encryption.

    Throws
    DeviceNotAvailableException

    isExecutable

    public boolean isExecutable (String fullPath)

    Returns True if the file path on the device is an executable file, false otherwise.

    Parameters
    fullPath String

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isFastbootEnabled

    public boolean isFastbootEnabled ()

    Return if fastboot is available for the device.

    Returns
    boolean

    isHeadless

    public boolean isHeadless ()

    Return true if the device is headless (no screen), false otherwise.

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isHeadlessSystemUserMode

    public boolean isHeadlessSystemUserMode ()

    Returns whether the device uses headless system user mode.

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isMainUserPermanentAdmin

    public boolean isMainUserPermanentAdmin ()

    Returns whether the main user is a permanent admin and can't be deleted or downgraded to non-admin status.

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isMultiUserSupported

    public boolean isMultiUserSupported ()

    Determines if multi user is supported.

    Returns
    boolean true if multi user is supported, false otherwise

    Throws
    DeviceNotAvailableException

    isPackageInstalled

    public boolean isPackageInstalled (String packageName, 
                    String userId)

    Query the device for a given package name and given user id to check if it's currently installed or not for that user.

    Parameters
    packageName String : the package we are checking if it's installed.

    userId String : The user id we are checking the package is installed for. If null, primary user zero will be used.

    Returns
    boolean True if the package is reported as installed. False otherwise.

    Throws
    DeviceNotAvailableException

    isPackageInstalled

    public boolean isPackageInstalled (String packageName)

    Query the device for a given package name to check if it's currently installed or not.

    Parameters
    packageName String

    Returns
    boolean True if the package is reported as installed. False otherwise.

    Throws
    DeviceNotAvailableException

    isRuntimePermissionSupported

    public boolean isRuntimePermissionSupported ()

    Check whether platform on device supports runtime permission granting

    Returns
    boolean True if runtime permission are supported, false otherwise.

    Throws
    DeviceNotAvailableException

    isStateBootloaderOrFastbootd

    public boolean isStateBootloaderOrFastbootd ()

    Returns true if device is in TestDeviceState#FASTBOOT or TestDeviceState.FASTBOOTD .

    Returns
    boolean

    isUserRunning

    public boolean isUserRunning (int userId)

    Check if a given user is running.

    Parameters
    userId int

    Returns
    boolean True if the user is running, false in every other cases.

    Throws
    DeviceNotAvailableException

    isUserSecondary

    public boolean isUserSecondary (int userId)

    Return whether the specified user is a secondary user according to it's flags.

    Parameters
    userId int

    Returns
    boolean true if the user is secondary, false otherwise.

    Throws
    DeviceNotAvailableException

    isUserVisible

    public boolean isUserVisible (int userId)

    Checks if the given user is visible.

    A "visible" user is a user that is interacting with the "human" user and hence is able to launch launch activities (typically in the default display).

    Parameters
    userId int

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isUserVisibleOnDisplay

    public boolean isUserVisibleOnDisplay (int userId, 
                    int displayId)

    Checks if the given user is visible in the given display.

    A "visible" user is a user that is interacting with the "human" user and hence is able to launch launch activities in that display.

    Parameters
    userId int

    displayId int

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isVisibleBackgroundUsersOnDefaultDisplaySupported

    public boolean isVisibleBackgroundUsersOnDefaultDisplaySupported ()

    Returns whether the device allow users to be started visible in the background in the ERROR(/java.android.view.Display#DEFAULT_DISPLAY) .

    If it does, you could call startVisibleBackgroundUser(int, int, boolean) , passing a display returned by listDisplayIdsForStartingVisibleBackgroundUsers() (which should include ERROR(/java.android.view.Display#DEFAULT_DISPLAY) ).

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isVisibleBackgroundUsersSupported

    public boolean isVisibleBackgroundUsersSupported ()

    Returns whether the device allow users to be started visible in the background.

    If it does, you could call startVisibleBackgroundUser(int, int, boolean) , passing a display returned by listDisplayIdsForStartingVisibleBackgroundUsers() .

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    isWifiEnabled

    public boolean isWifiEnabled ()

    Test if wifi is enabled.

    Checks if wifi is enabled on device. Useful for asserting wifi status before tests that shouldn't run with wifi, eg mobile data tests.

    Returns
    boolean true if wifi is enabled. false if disabled

    Throws
    DeviceNotAvailableException

    listDisplayIds

    public  listDisplayIds ()

    Collect the list of available displays id on the device as reported by "dumpsys SurfaceFlinger".

    Returns
    The list of displays. Default always returns the default display 0.

    Throws
    DeviceNotAvailableException

    listDisplayIdsForStartingVisibleBackgroundUsers

    public  listDisplayIdsForStartingVisibleBackgroundUsers ()

    Gets the list of displays that can be used to start a user visible in the background .

    Returns

    Throws
    DeviceNotAvailableException

    listUsers

    public  listUsers ()

    Gets the list of users on the device. Will throw DeviceRuntimeException if output from device is not as expected.

    Returns
    the list of user ids.

    Throws
    DeviceNotAvailableException

    logAnrs

    public boolean logAnrs (ITestLogger logger)

    Collects and log ANRs from the device.

    Parameters
    logger ITestLogger : an ITestLogger to log the ANRs.

    Returns
    boolean True if the logging was successful, false otherwise.

    Throws
    DeviceNotAvailableException

    logBugreport

    public boolean logBugreport (String dataName, 
                    ITestLogger listener)

    Helper method to take a bugreport and log it to the reporters.

    Parameters
    dataName String : name under which the bugreport will be reported.

    listener ITestLogger : an ITestLogger to log the bugreport.

    Returns
    boolean True if the logging was successful, false otherwise.

    logOnDevice

    public void logOnDevice (String tag, 
                    Log.LogLevel level, 
                    String format, 
                    Object... args)

    Log a message in the logcat of the device. This is a safe call that will not throw even if the logging fails.

    Parameters
    tag String : The tag under which we log our message in the logcat.

    level Log.LogLevel : The debug level of the message in the logcat.

    format String : The message format.

    args Object : the args to be replaced via String.format().

    nonBlockingReboot

    public void nonBlockingReboot ()

    Issues a command to reboot device and returns on command complete and when device is no longer visible to adb.

    Throws
    DeviceNotAvailableException

    postAdbRootAction

    public void postAdbRootAction ()

    Override if the device needs some specific actions to be taken after adb root and before the device is back online. Default implementation doesn't include any addition actions. adb root is not guaranteed to be enabled at this stage.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    postAdbUnrootAction

    public void postAdbUnrootAction ()

    Override if the device needs some specific actions to be taken after adb unroot and before the device is back online. Default implementation doesn't include any additional actions. adb root is not guaranteed to be disabled at this stage.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    postBootSetup

    public void postBootSetup ()

    Perform instructions to configure device for testing that after every boot.

    Should be called after device is fully booted/available

    In normal circumstances this method doesn't need to be called explicitly, as implementations should perform these steps automatically when performing a reboot.

    Where it may need to be called is when device reboots due to other events (eg when a fastboot update command has completed)

    Throws
    DeviceNotAvailableException

    postInvocationTearDown

    public void postInvocationTearDown (Throwable exception)

    Extra steps for device specific required clean up that will be executed after the invocation is done.

    Parameters
    exception Throwable : if any, the final exception raised by the invocation failure.

    preInvocationSetup

    public void preInvocationSetup (IBuildInfo info, 
                    MultiMap<String, String> attributes)

    Extra steps for device specific required setup that will be executed on the device prior to the invocation flow.

    Parameters
    info IBuildInfo : The IBuildInfo of the device.

    attributes MultiMap : The attributes stored in the invocation context

    Throws
    DeviceNotAvailableException
    TargetSetupError

    pullDir

    public boolean pullDir (String deviceFilePath, 
                    File localDir)

    Recursively pull directory contents from device.

    Parameters
    deviceFilePath String : the absolute file path of the remote source

    localDir File : the local directory to pull files into

    Returns
    boolean true if file was pulled successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pullFile

    public boolean pullFile (String remoteFilePath, 
                    File localFile)

    Retrieves a file off device.

    Parameters
    remoteFilePath String : the absolute path to file on device.

    localFile File : the local file to store contents in. If non-empty, contents will be replaced.

    Returns
    boolean true if file was retrieved successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pullFile

    public File pullFile (String remoteFilePath, 
                    int userId)

    Retrieves a file off device, stores it in a local temporary ERROR(/File) , and returns that File .

    Parameters
    remoteFilePath String : the absolute path to file on device.

    userId int : The user id to pull from

    Returns
    File A ERROR(/File) containing the contents of the device file, or null if the copy failed for any reason (including problems with the host filesystem)

    Throws
    DeviceNotAvailableException

    pullFile

    public File pullFile (String remoteFilePath)

    Retrieves a file off device, stores it in a local temporary ERROR(/File) , and returns that File .

    Parameters
    remoteFilePath String : the absolute path to file on device.

    Returns
    File A ERROR(/File) containing the contents of the device file, or null if the copy failed for any reason (including problems with the host filesystem)

    Throws
    DeviceNotAvailableException

    pullFile

    public boolean pullFile (String remoteFilePath, 
                    File localFile, 
                    int userId)

    Retrieves a file off device.

    Parameters
    remoteFilePath String : the absolute path to file on device.

    localFile File : the local file to store contents in. If non-empty, contents will be replaced.

    userId int : The user id to pull from

    Returns
    boolean true if file was retrieved successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pullFileContents

    public String pullFileContents (String remoteFilePath)

    Retrieves a file off device, and returns the contents.

    Parameters
    remoteFilePath String : the absolute path to file on device.

    Returns
    String A ERROR(/String) containing the contents of the device file, or null if the copy failed for any reason (including problems with the host filesystem)

    Throws
    DeviceNotAvailableException

    pullFileFromExternal

    public File pullFileFromExternal (String remoteFilePath)

    A convenience method to retrieve a file from the device's external storage, stores it in a local temporary ERROR(/File) , and return a reference to that File .

    Parameters
    remoteFilePath String : the path to file on device, relative to the device's external storage mountpoint

    Returns
    File A ERROR(/File) containing the contents of the device file, or null if the copy failed for any reason (including problems with the host filesystem)

    Throws
    DeviceNotAvailableException

    pushDir

    public boolean pushDir (File localFileDir, 
                    String deviceFilePath, 
                     excludedDirectories)

    Recursively push directory contents to device while excluding some directories that are filtered.

    Parameters
    localFileDir File : the local directory to push

    deviceFilePath String : the absolute file path of the remote destination

    excludedDirectories : Set of excluded directories names that shouldn't be pushed.

    Returns
    boolean true if file was pushed successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pushDir

    public boolean pushDir (File localFileDir, 
                    String deviceFilePath)

    Recursively push directory contents to device.

    Parameters
    localFileDir File : the local directory to push

    deviceFilePath String : the absolute file path of the remote destination

    Returns
    boolean true if file was pushed successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pushFile

    public boolean pushFile (File localFile, 
                    String remoteFilePath, 
                    boolean evaluateContentProviderNeeded)

    Variant of pushFile(File, String) which can optionally consider evaluating the need for the content provider.

    Parameters
    localFile File : the local file to push

    remoteFilePath String : the remote destination absolute file path

    evaluateContentProviderNeeded boolean : whether to check if we need the content provider

    Returns
    boolean true if file was pushed successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pushFile

    public boolean pushFile (File localFile, 
                    String remoteFilePath)

    Push a file to device. By default using a content provider.

    Parameters
    localFile File : the local file to push

    remoteFilePath String : the remote destination absolute file path

    Returns
    boolean true if file was pushed successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    pushString

    public boolean pushString (String contents, 
                    String remoteFilePath)

    Push file created from a string to device

    Parameters
    contents String : the contents of the file to push

    remoteFilePath String : the remote destination absolute file path

    Returns
    boolean true if string was pushed successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    reboot

    public void reboot (String reason)

    Reboots the device into adb mode with given reason to be persisted across reboot.

    Blocks until device becomes available.

    Last reboot reason can be obtained by querying sys.boot.reason propety.

    Parameters
    reason String : a reason for this reboot, or null if no reason is specified.

    Throws
    DeviceNotAvailableException

    reboot

    public void reboot ()

    Reboots the device into adb mode.

    Blocks until device becomes available.

    Throws
    DeviceNotAvailableException

    rebootIntoBootloader

    public void rebootIntoBootloader ()

    Reboots the device into bootloader mode.

    Blocks until device is in bootloader mode.

    Throws
    DeviceNotAvailableException

    rebootIntoFastbootd

    public void rebootIntoFastbootd ()

    Reboots the device into fastbootd mode.

    Blocks until device is in fastbootd mode.

    Throws
    DeviceNotAvailableException

    rebootIntoRecovery

    public void rebootIntoRecovery ()

    Reboots the device into adb recovery mode.

    Blocks until device enters recovery

    Throws
    DeviceNotAvailableException

    rebootIntoSideload

    public void rebootIntoSideload ()

    Reboots the device into adb sideload mode (note that this is a special mode under recovery)

    Blocks until device enters sideload mode

    Throws
    DeviceNotAvailableException

    rebootIntoSideload

    public void rebootIntoSideload (boolean autoReboot)

    Reboots the device into adb sideload mode (note that this is a special mode under recovery)

    Blocks until device enters sideload mode

    Parameters
    autoReboot boolean : whether to automatically reboot the device after sideload

    Throws
    DeviceNotAvailableException

    rebootUntilOnline

    public void rebootUntilOnline ()

    An alternate to reboot() that only blocks until device is online ie visible to adb.

    Throws
    DeviceNotAvailableException

    rebootUntilOnline

    public void rebootUntilOnline (String reason)

    An alternate to reboot() that only blocks until device is online ie visible to adb.

    Parameters
    reason String : a reason for this reboot, or null if no reason is specified.

    Throws
    DeviceNotAvailableException

    rebootUserspace

    public void rebootUserspace ()

    Reboots only userspace part of device.

    Blocks until device becomes available.

    WARNING. Userspace reboot is currently under active development, use it on your own risk.

    Throws
    DeviceNotAvailableException

    rebootUserspaceUntilOnline

    public void rebootUserspaceUntilOnline ()

    An alternate to rebootUserspace() ()} that only blocks until device is online ie visible to adb.

    Throws
    DeviceNotAvailableException

    recoverDevice

    public boolean recoverDevice ()

    Attempts to recover device communication.

    Returns
    boolean True if recovery attempted and successful, returns False if recovery was skipped

    Throws
    DeviceNotAvailableException if device is no longer available

    registerDeviceActionReceiver

    public void registerDeviceActionReceiver (IDeviceActionReceiver deviceActionReceiver)

    Registers a IDeviceActionReceiver for this device.

    All registered IDeviceActionReceiver s will be notified before a device action starts and after the device action ends.

    Parameters
    deviceActionReceiver IDeviceActionReceiver : A IDeviceActionReceiver which will be registered.

    remountSystemWritable

    public void remountSystemWritable ()

    Make the system partition on the device writable. May reboot the device.

    Throws
    DeviceNotAvailableException

    remountVendorWritable

    public void remountVendorWritable ()

    Make the vendor partition on the device writable. May reboot the device.

    Throws
    DeviceNotAvailableException

    removeAdmin

    public boolean removeAdmin (String componentName, 
                    int userId)

    Remove given device admin in given user and return true if it is successful, false otherwise.

    Parameters
    componentName String : of device admin to be removed.

    userId int : of user that the device admin lives in.

    Returns
    boolean True if it is successful, false otherwise.

    Throws
    DeviceNotAvailableException

    removeOwners

    public void removeOwners ()

    Remove all existing device profile owners with the best effort.

    Throws
    DeviceNotAvailableException

    removeUser

    public boolean removeUser (int userId)

    Remove a given user from the device.

    Parameters
    userId int : of the user to remove

    Returns
    boolean true if we were successful in removing the user, false otherwise.

    Throws
    DeviceNotAvailableException

    resetContentProviderSetup

    public void resetContentProviderSetup ()

    Reset the flag for content provider setup in order to trigger it again.

    runInstrumentationTests

    public boolean runInstrumentationTests (IRemoteAndroidTestRunner runner, 
                    ITestLifeCycleReceiver... listeners)

    Convenience method for performing ERROR(/#runInstrumentationTests(com.android.ddmlib.testrunner.IRemoteAndroidTestRunner,Collection)) with one or more listeners passed as parameters.

    Parameters
    runner IRemoteAndroidTestRunner : the IRemoteAndroidTestRunner which runs the tests

    listeners ITestLifeCycleReceiver : the test result listener(s)

    Returns
    boolean true if test command completed. false if it failed to complete, but recovery succeeded

    Throws
    DeviceNotAvailableException

    runInstrumentationTests

    public boolean runInstrumentationTests (IRemoteAndroidTestRunner runner, 
                     listeners)

    Runs instrumentation tests, and provides device recovery.

    If connection with device is lost before test run completes, and recovery succeeds, all listeners will be informed of testRunFailed and "false" will be returned. The test command will not be rerun. It is left to callers to retry if necessary.

    If connection with device is lost before test run completes, and recovery fails, all listeners will be informed of testRunFailed and DeviceNotAvailableException will be thrown.

    Parameters
    runner IRemoteAndroidTestRunner : the IRemoteAndroidTestRunner which runs the tests

    listeners : the test result listeners

    Returns
    boolean true if test command completed. false if it failed to complete due to device communication exception, but recovery succeeded

    Throws
    DeviceNotAvailableException

    runInstrumentationTestsAsUser

    public boolean runInstrumentationTestsAsUser (IRemoteAndroidTestRunner runner, 
                    int userId, 
                     listeners)

    Same as ERROR(ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, Collection)/com.android.tradefed.device.ITestDevice#runInstrumentationTests(com.android.ddmlib.testrunner.IRemoteAndroidTestRunner,Collection) ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, Collection)) but runs the test for the given user.

    Parameters
    runner IRemoteAndroidTestRunner

    userId int

    listeners

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    runInstrumentationTestsAsUser

    public boolean runInstrumentationTestsAsUser (IRemoteAndroidTestRunner runner, 
                    int userId, 
                    ITestLifeCycleReceiver... listeners)

    Same as ITestDevice#runInstrumentationTests(IRemoteAndroidTestRunner, ITestLifeCycleReceiver...) but runs the test for a given user.

    Parameters
    runner IRemoteAndroidTestRunner

    userId int

    listeners ITestLifeCycleReceiver

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    setConfiguration

    public void setConfiguration (IConfiguration configuration)

    Injects the IConfiguration in use.

    Parameters
    configuration IConfiguration

    setDate

    public void setDate (Date date)

    Sets the date on device

    Note: setting date on device requires root

    Parameters
    date Date : specify a particular date; will use host date if null

    Throws
    DeviceNotAvailableException

    setDeviceOwner

    public boolean setDeviceOwner (String componentName, 
                    int userId)

    Set a device admin component as device owner in given user.

    Parameters
    componentName String : of device admin to be device owner.

    userId int : of the user that the device owner lives in.

    Returns
    boolean True if it is successful, false otherwise.

    Throws
    DeviceNotAvailableException

    setDeviceState

    public void setDeviceState (TestDeviceState deviceState)

    Update the device's state.

    Parameters
    deviceState TestDeviceState : the TestDeviceState

    setEmulatorOutputStream

    public void setEmulatorOutputStream (SizeLimitedOutputStream output)

    For emulator set SizeLimitedOutputStream to log output

    Parameters
    output SizeLimitedOutputStream : to log the output

    setEmulatorProcess

    public void setEmulatorProcess (Process p)

    Sets the ERROR(/Process) , when this device is an emulator.

    Parameters
    p Process

    setFastbootEnabled

    public void setFastbootEnabled (boolean fastbootEnabled)

    Set the fastboot option for the device. Should be set when device is first allocated.

    Parameters
    fastbootEnabled boolean : whether fastboot is available for the device or not

    setFastbootPath

    public void setFastbootPath (String fastbootPath)

    Sets the path to the fastboot binary that should be used. Still requires isFastbootEnabled() to be true, to have fastboot functions enabled.

    Parameters
    fastbootPath String

    setIDevice

    public void setIDevice (IDevice newDevice)

    Update the IDevice associated with this ITestDevice.

    The new IDevice must refer the same physical device as the current reference. This method will be called if DDMS has allocated a new IDevice

    Parameters
    newDevice IDevice : the IDevice

    setLogStartDelay

    public void setLogStartDelay (int delay)

    Sets the time in ms to wait before starting logcat capture for a online device.

    Parameters
    delay int : the delay in ms

    setOptions

    public void setOptions (TestDeviceOptions options)

    Set the TestDeviceOptions for the device

    Parameters
    options TestDeviceOptions

    setProperty

    public boolean setProperty (String propKey, 
                    String propValue)

    Sets the given property value on the device. Requires adb root is true.

    Parameters
    propKey String : The key targeted to be set.

    propValue String : The property value to be set.

    Returns
    boolean returns True if the setprop command was successful, False otherwise.

    Throws
    DeviceNotAvailableException

    setRecovery

    public void setRecovery (IDeviceRecovery recovery)

    Set the IDeviceRecovery to use for this device. Should be set when device is first allocated.

    Parameters
    recovery IDeviceRecovery : the IDeviceRecovery

    setRecoveryMode

    public void setRecoveryMode (ITestDevice.RecoveryMode mode)

    Set the current recovery mode to use for the device.

    Used to control what recovery method to use when a device communication problem is encountered. Its recommended to only use this method sparingly when needed (for example, when framework is down, etc

    Parameters
    mode ITestDevice.RecoveryMode : whether 'recover till online only' mode should be on or not.

    setSetting

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

    See setSetting(int, String, String, String) and performed on system user.

    Parameters
    namespace String

    key String

    value String

    Throws
    DeviceNotAvailableException

    setSetting

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

    Add a setting value to the namespace of a given user. Some settings will only be available after a reboot. namespace must be one of: {"system", "secure", "global"}

    Parameters
    userId int

    namespace String

    key String

    value String

    Throws
    DeviceNotAvailableException

    setTestLogger

    public void setTestLogger (ITestLogger testLogger)

    Injects the ITestLogger instance

    Parameters
    testLogger ITestLogger

    setUseFastbootErase

    public void setUseFastbootErase (boolean useFastbootErase)

    Set whether to use fastboot erase or fastboot format to wipe a partition on the device.

    Parameters
    useFastbootErase boolean : true if fastboot erase should be used or false if fastboot format should be used.

    startLogcat

    public void startLogcat ()

    Start capturing logcat output from device in the background.

    Will have no effect if logcat output is already being captured. Data can be later retrieved via getLogcat.

    When the device is no longer in use, stopLogcat() must be called.

    startLogcat() and stopLogcat() do not normally need to be called when within a TF invocation context, as the TF framework will start and stop logcat.

    startUser

    public boolean startUser (int userId)

    Starts a given user in the background if it is currently stopped. If the user is already running in the background, this method is a NOOP.

    Parameters
    userId int : of the user to start in the background

    Returns
    boolean true if the user was successfully started in the background.

    Throws
    DeviceNotAvailableException

    startUser

    public boolean startUser (int userId, 
                    boolean waitFlag)

    Starts a given user in the background if it is currently stopped. If the user is already running in the background, this method is a NOOP. Possible to provide extra flag to wait for the operation to have effect.

    Parameters
    userId int : of the user to start in the background

    waitFlag boolean : will make the command wait until user is started and unlocked.

    Returns
    boolean true if the user was successfully started in the background.

    Throws
    DeviceNotAvailableException

    startVisibleBackgroundUser

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

    Starts a given user in the background, visible in the given display (ie, allowing the user to launch activities in that display).

    NOTE: this command doesn't check if the user exists, display is available, device supports such feature , etc.

    Parameters
    userId int : of the user to start in the background

    displayId int : display to start user visible on

    waitFlag boolean : will make the command wait until user is started and unlocked.

    Returns
    boolean true if the user was successfully started visible in the background.

    Throws
    DeviceNotAvailableException

    stopEmulatorOutput

    public void stopEmulatorOutput ()

    Close and delete the emulator output.

    stopLogcat

    public void stopLogcat ()

    Stop capturing logcat output from device, and discard currently saved logcat data.

    Will have no effect if logcat output is not being captured.

    stopUser

    public boolean stopUser (int userId)

    Stops a given user. If the user is already stopped, this method is a NOOP. Cannot stop current and system user.

    Parameters
    userId int : of the user to stop.

    Returns
    boolean true if the user was successfully stopped.

    Throws
    DeviceNotAvailableException

    stopUser

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

    Stop a given user. Possible to provide extra flags to wait for the operation to have effect, and force terminate the user. Cannot stop current and system user.

    Parameters
    userId int : of the user to stop.

    waitFlag boolean : will make the command wait until user is stopped.

    forceFlag boolean : will force stop the user.

    Returns
    boolean true if the user was successfully stopped.

    Throws
    DeviceNotAvailableException

    switchToAdbTcp

    public String switchToAdbTcp ()

    Switch device to adb-over-tcp mode.

    Returns
    String the tcp serial number or null if device could not be switched

    Throws
    DeviceNotAvailableException

    switchToAdbUsb

    public boolean switchToAdbUsb ()

    Switch device to adb over usb mode.

    Returns
    boolean true if switch was successful, false otherwise.

    Throws
    DeviceNotAvailableException

    switchUser

    public boolean switchUser (int userId)

    Switch to another userId with a default timeout. switchUser(int, long) .

    Parameters
    userId int

    Returns
    boolean True if the new userId matches the userId provider. False otherwise.

    Throws
    DeviceNotAvailableException

    switchUser

    public boolean switchUser (int userId, 
                    long timeout)

    Switch to another userId with the provided timeout as deadline. Attempt to disable keyguard after user change is successful.

    Parameters
    userId int

    timeout long : to wait before returning false for switch-user failed.

    Returns
    boolean True if the new userId matches the userId provider. False otherwise.

    Throws
    DeviceNotAvailableException

    syncFiles

    public boolean syncFiles (File localFileDir, 
                    String deviceFilePath)

    Incrementally syncs the contents of a local file directory to device.

    Decides which files to push by comparing timestamps of local files with their remote equivalents. Only 'newer' or non-existent files will be pushed to device. Thus overhead should be relatively small if file set on device is already up to date.

    Hidden files (with names starting with ".") will be ignored.

    Example usage: syncFiles("/tmp/files", "/sdcard") will created a /sdcard/files directory if it doesn't already exist, and recursively push the /tmp/files contents to /sdcard/files.

    Parameters
    localFileDir File : the local file directory containing files to recursively push.

    deviceFilePath String : the remote destination absolute file path root. All directories in thos file path must be readable. ie pushing to /data/local/tmp when adb is not root will fail

    Returns
    boolean true if files were synced successfully. false otherwise.

    Throws
    DeviceNotAvailableException

    takeBugreport

    public Bugreport takeBugreport ()

    Take a bugreport and returns it inside a Bugreport object to handle it. Return null in case of issue. File referenced in the Bugreport object need to be cleaned via Bugreport.close() .

    Returns
    Bugreport

    uninstallPackage

    public String uninstallPackage (String packageName)

    Uninstall an Android package from device.

    Parameters
    packageName String : the Android package to uninstall

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    uninstallPackageForUser

    public String uninstallPackageForUser (String packageName, 
                    int userId)

    Uninstall an Android package from device for a given user.

    Parameters
    packageName String : the Android package to uninstall

    userId int : the integer user id to uninstall for.

    Returns
    String a ERROR(/String) with an error code, or null if success.

    Throws
    DeviceNotAvailableException

    unlockDevice

    public boolean unlockDevice ()

    Unlocks the device if the device is in an encrypted state.

    This method may restart the framework but will not call postBootSetup() . Therefore, the device might not be fully ready to be tested when this method returns.

    Returns
    boolean true if successful or if the device is unencrypted.

    Throws
    DeviceNotAvailableException

    waitForBootComplete

    public boolean waitForBootComplete (long timeOut)

    Blocks until the device's boot complete flag is set.

    Parameters
    timeOut long : time in msecs to wait for the flag to be set

    Returns
    boolean true if device's boot complete flag is set within the timeout

    Throws
    DeviceNotAvailableException

    waitForDeviceAvailable

    public boolean waitForDeviceAvailable ()

    Waits for the device to be responsive and available for testing. Uses default timeout.

    Returns
    boolean True if device is available, False if recovery is disabled and unavailable.

    Throws
    DeviceNotAvailableException

    waitForDeviceAvailable

    public boolean waitForDeviceAvailable (long waitTime)

    Waits for the device to be responsive and available for testing.

    Parameters
    waitTime long : the time in ms to wait

    Returns
    boolean True if device is available, False if recovery is disabled and unavailable.

    Throws
    DeviceNotAvailableException

    waitForDeviceAvailableInRecoverPath

    public boolean waitForDeviceAvailableInRecoverPath (long waitTime)

    Waits for the device to be responsive and available without considering recovery path.

    Parameters
    waitTime long

    Returns
    boolean True if device is available, False if unavailable.

    Throws
    DeviceNotAvailableException

    waitForDeviceBootloader

    public void waitForDeviceBootloader ()

    Blocks until device is visible via fastboot. Use default timeout.

    Throws
    DeviceNotAvailableException

    waitForDeviceInRecovery

    public boolean waitForDeviceInRecovery (long waitTime)

    Blocks for the device to be in the 'adb recovery' state (note this is distinct from IDeviceRecovery ).

    Parameters
    waitTime long : the time in ms to wait

    Returns
    boolean true if device boots into recovery before time expires. false otherwise

    waitForDeviceInSideload

    public boolean waitForDeviceInSideload (long waitTime)

    Blocks for the device to be in the 'adb sideload' state

    Parameters
    waitTime long : the time in ms to wait

    Returns
    boolean true if device boots into sideload before time expires. false otherwise

    waitForDeviceNotAvailable

    public boolean waitForDeviceNotAvailable (long waitTime)

    Blocks for the device to be not available ie missing from adb

    Parameters
    waitTime long : the time in ms to wait

    Returns
    boolean true if device becomes not available before time expires. false otherwise

    waitForDeviceOnline

    public void waitForDeviceOnline ()

    Blocks until device is visible via adb. Uses default timeout

    Note the device may not necessarily be responsive to commands on completion. Use waitForDeviceAvailable() instead.

    Throws
    DeviceNotAvailableException

    waitForDeviceOnline

    public void waitForDeviceOnline (long waitTime)

    Blocks until device is visible via adb.

    Note the device may not necessarily be responsive to commands on completion. Use waitForDeviceAvailable() instead.

    Parameters
    waitTime long : the time in ms to wait

    Throws
    DeviceNotAvailableException

    waitForDeviceShell

    public boolean waitForDeviceShell (long waitTime)

    Waits for device to be responsive to a basic adb shell command.

    Parameters
    waitTime long : the time in ms to wait

    Returns
    boolean true if device becomes responsive before waitTime elapses.

    Protected methods

    buildAdbShellCommand

    protected String[] buildAdbShellCommand (String command, 
                    boolean forceExitStatusDetection)

    Builds the OS command for the given adb shell command session and args

    Parameters
    command String

    forceExitStatusDetection boolean

    Returns
    String[]

    checkApiLevelAgainst

    protected void checkApiLevelAgainst (String feature, 
                    int strictMinLevel)

    Parameters
    feature String

    strictMinLevel int

    createRebootDeviceAction

    protected NativeDevice.RebootDeviceAction createRebootDeviceAction (NativeDevice.RebootMode rebootMode, 
                    String reason)

    Create a RebootDeviceAction to be used when performing a reboot action.

    Parameters
    rebootMode NativeDevice.RebootMode : a mode of this reboot.

    reason String : for this reboot.

    Returns
    NativeDevice.RebootDeviceAction the created RebootDeviceAction .

    createRunUtil

    protected IRunUtil createRunUtil ()

    Returns
    IRunUtil

    doAdbReboot

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

    Perform a adb reboot.

    Parameters
    rebootMode NativeDevice.RebootMode : a mode of this reboot.

    reason String : for this reboot.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    ensureRuntimePermissionSupported

    protected void ensureRuntimePermissionSupported ()

    helper method to throw exception if runtime permission isn't supported

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    getApiLevelSafe

    protected int getApiLevelSafe ()

    Returns
    int

    getLogger

    protected ITestLogger getLogger ()

    Returns
    ITestLogger

    getRunUtil

    protected IRunUtil getRunUtil ()

    Get the RunUtil instance to use.

    Returns
    IRunUtil

    initializeConnection

    protected void initializeConnection (IBuildInfo info, 
                    MultiMap<String, String> attributes)

    Parameters
    info IBuildInfo

    attributes MultiMap

    Throws
    DeviceNotAvailableException
    TargetSetupError

    internalGetProperty

    protected String internalGetProperty (String propName, 
                    String fastbootVar, 
                    String description)

    Fetch a device property, from the ddmlib cache by default, and falling back to either `adb shell getprop` or `fastboot getvar` depending on whether the device is in Fastboot or not.

    Parameters
    propName String : The name of the device property as returned by `adb shell getprop`

    fastbootVar String : The name of the equivalent fastboot variable to query. if null , fastboot query will not be attempted

    description String : A simple description of the variable. First letter should be capitalized.

    Returns
    String A string, possibly null or empty, containing the value of the given property

    Throws
    DeviceNotAvailableException

    isInRebootCallback

    protected boolean isInRebootCallback ()

    Returns whether reboot callbacks is currently being executed or not. All public api's for reboot should be disabled if true.

    Returns
    boolean

    isNewer

    protected boolean isNewer (File localFile, 
                    IFileEntry entry)

    Return true if local file is newer than remote file. IFileEntry being accurate to the minute, in case of equal times, the file will be considered newer.

    Parameters
    localFile File

    entry IFileEntry

    Returns
    boolean

    notifyRebootEnded

    protected void notifyRebootEnded ()

    Notifies all IDeviceActionReceiver about reboot end event.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    notifyRebootStarted

    protected void notifyRebootStarted ()

    Notifies all IDeviceActionReceiver about reboot start event.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    performDeviceAction

    protected boolean performDeviceAction (String actionDescription, 
                    NativeDevice.DeviceAction action, 
                    int retryAttempts)

    Performs an action on this device. Attempts to recover device and optionally retry command if action fails.

    Parameters
    actionDescription String : a short description of action to be performed. Used for logging purposes only.

    action NativeDevice.DeviceAction : the action to be performed

    retryAttempts int : the retry attempts to make for action if it fails but recovery succeeds

    Returns
    boolean true if action was performed successfully

    Throws
    DeviceNotAvailableException if recovery attempt fails or max attempts done without success

    postAdbReboot

    protected void postAdbReboot ()

    Possible extra actions that can be taken after a reboot.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    prePostBootSetup

    protected void prePostBootSetup ()

    Allows each device type (AndroidNativeDevice, TestDevice) to override this method for specific post boot setup.

    Throws
    com.android.tradefed.device.DeviceNotAvailableException
    DeviceNotAvailableException

    pullFileInternal

    protected boolean pullFileInternal (String remoteFilePath, 
                    File localFile)

    Parameters
    remoteFilePath String

    localFile File

    Returns
    boolean

    Throws
    DeviceNotAvailableException

    setClock

    protected void setClock (Clock clock)

    Set the Clock instance to use.

    Parameters
    clock Clock

    setMicrodroidProcess

    protected void setMicrodroidProcess (Process process)

    Marks the TestDevice as microdroid and sets its CID.

    Parameters
    process Process : Process of the Microdroid VM.

    setTestDeviceOptions

    protected void setTestDeviceOptions ( deviceOptions)

    Parameters
    deviceOptions

    simpleFastbootCommand

    protected CommandResult simpleFastbootCommand (long timeout, 
                     envVarMap, 
                    String[] fullCmd)

    Executes a simple fastboot command with environment variables and report the status of the command.

    Parameters
    timeout long

    envVarMap

    fullCmd String

    Returns
    CommandResult

    simpleFastbootCommand

    protected CommandResult simpleFastbootCommand (long timeout, 
                    String[] fullCmd)

    Executes a simple fastboot command and report the status of the command.

    Parameters
    timeout long

    fullCmd String

    Returns
    CommandResult

    waitForDeviceNotAvailable

    protected boolean waitForDeviceNotAvailable (String operationDesc, 
                    long time)

    Wait to see the device going unavailable (stop reporting to adb).

    Parameters
    operationDesc String : The name of the operation that is waiting for unavailable.

    time long : The time to wait for unavailable to occur.

    Returns
    boolean True if device did become unavailable.