測試裝置

public class TestDevice
extends NativeDevice

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


為完整堆疊 Android 裝置實作 ITestDevice

摘要

巢狀類別

class TestDevice.MicrodroidBuilder

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

欄位

public static final String DISMISS_KEYGUARD_CMD

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

公用建構函式

TestDevice(IDevice device, IDeviceStateMonitor stateMonitor, IDeviceMonitor allocationMonitor)

公用方法

boolean canSwitchToHeadlessSystemUser()

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

boolean clearErrorDialogs()

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

int createUser(String name)

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

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

使用名字和提供的旗標建立使用者

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

使用名字和提供的旗標建立使用者

int createUserNoThrow(String name)

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

void disableKeyguard()

嘗試停用鍵盤鎖。

boolean doesFileExist(String deviceFilePath)

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

boolean doesFileExist(String deviceFilePath, int userId)

輔助方法可判斷特定使用者裝置上的檔案是否存在。

File dumpHeap(String process, String devicePath)

嘗試從 system_server 轉儲記憶體快照。

getActiveApexes()

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

getAllSettings(String namespace)

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

String getAndroidId(int userId)

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

getAndroidIds()

建立已找到相符使用者 ID 的 Android ID 對應。

PackageInfo getAppPackageInfo(String packageName)

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

getAppPackageInfos()

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

InputStreamSource getBugreport()

從裝置擷取錯誤報告。

InputStreamSource getBugreportz()

從裝置擷取錯誤報告。

DeviceFoldableState getCurrentFoldableState()

傳回裝置目前的摺疊式裝置狀態;如果發生問題,則傳回空值。

int getCurrentUser()

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

getFoldableStates()

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

getInstalledPackageNames()

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

KeyguardControllerState getKeyguardState()

傳回物件即可取得鍵盤防護目前的狀態;如果不支援,則傳回空值。

Integer getMainUserId()

傳回主要使用者 ID。

getMainlineModuleInfo()

取得裝置上安裝的主系列模組相關資訊。

int getMaxNumberOfRunningUsersSupported()

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

int getMaxNumberOfUsersSupported()

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

Integer getPrimaryUserId()

傳回主要使用者 ID。

InputStreamSource getScreenshot()

擷取裝置的螢幕截圖。

InputStreamSource getScreenshot(String format, boolean rescale)

擷取裝置的螢幕截圖。

InputStreamSource getScreenshot(String format)

擷取裝置的螢幕截圖。

InputStreamSource getScreenshot(long displayId)

從特定裝置擷取螢幕截圖。

String getSetting(String namespace, String key)

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

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

傳回所要求設定的值。

getUninstallablePackageNames()

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

int getUserFlags(int userId)

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

getUserInfos()

將 useId 對應至裝置上的 UserInfo

int getUserSerialNumber(int userId)

如果出現與 UserId 相關聯的序號,則傳回相關聯的序號;如為其他情況,則傳回 -10000。

boolean hasFeature(String feature)

確認裝置是否支援該功能。

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

在裝置上安裝 Android 套件。

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

在裝置上安裝 Android 套件。

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

在裝置上安裝 Android 套件。

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

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

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

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

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

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

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

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

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

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

boolean isAppEnumerationSupported()

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

boolean isHeadlessSystemUserMode()

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

boolean isMainUserPermanentAdmin()

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

boolean isMultiUserSupported()

決定是否支援多使用者。

boolean isPackageInstalled(String packageName)

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

boolean isPackageInstalled(String packageName, String userId)

查詢裝置的特定套件名稱和指定使用者 ID,確認其目前是否 無論該使用者是否安裝

boolean isUserRunning(int userId)

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

boolean isUserSecondary(int userId)

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

boolean isUserVisible(int userId)

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

boolean isUserVisibleOnDisplay(int userId, int displayId)

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

boolean isVisibleBackgroundUsersOnDefaultDisplaySupported()

傳回裝置是否允許使用者在背景開啟 ERROR(/java.android.view.Display#DEFAULT_DISPLAY) 的背景啟動功能。

boolean isVisibleBackgroundUsersSupported()

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

listDisplayIds()

根據「dumpsys」回報在裝置上的可用螢幕 ID 清單 SurfaceFlinger」。

listDisplayIdsForStartingVisibleBackgroundUsers()

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

listUsers()

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

boolean logBugreport(String dataName, ITestLogger listener)

協助取得錯誤報告並記錄回報者的輔助方法。

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

針對裝置特定需求清除的額外步驟,將在叫用後執行 因此,在執行復原作業

boolean removeAdmin(String componentName, int userId)

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

void removeOwners()

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

boolean removeUser(int userId)

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

boolean setDeviceOwner(String componentName, int userId)

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

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

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

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

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

void shutdownMicrodroid(ITestDevice microdroidDevice)

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

boolean startUser(int userId)

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

boolean startUser(int userId, boolean waitFlag)

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

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

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

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

停止特定使用者。

boolean stopUser(int userId)

停止特定使用者。

boolean supportsMicrodroid()

檢查執行 microdroid 的先決條件。

boolean supportsMicrodroid(boolean protectedVm)

檢查執行 microdroid 的先決條件。

boolean switchUser(int userId)

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

boolean switchUser(int userId, long timeout)

切換到另一個設有逾時期限的 UserId。

Bugreport takeBugreport()

取得錯誤報告,並在 Bugreport 物件中傳回以進行處理。

String uninstallPackage(String packageName)

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

String uninstallPackageForUser(String packageName, int userId)

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

void waitForSnapuserd(SnapuserdWaitPhase currentPhase)

保護方法

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

執行 ADB 重新啟動。

InputStreamSource getBugreportInternal()
File getBugreportzInternal()

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

long getCheckNewUserSleep()

公開測試。

long getHostCurrentTime()

公開測試

void prePostBootSetup()

允許各個裝置類型 (AndroidNativeDevice、TestDevice) 覆寫此方法: 再執行特定作業

欄位

DISMISS_KEYGUARD_CMD

public static final String DISMISS_KEYGUARD_CMD

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

公用建構函式

測試裝置

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

公用方法

CanSwitchToHeadlessSystemUser

public boolean canSwitchToHeadlessSystemUser ()

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

傳回
boolean

擲回
DeviceNotAvailableException

ClearErrorDialogs

public boolean clearErrorDialogs ()

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

傳回
boolean true表示未顯示任何對話方塊,或已成功清除對話方塊。 否則為 false

擲回
DeviceNotAvailableException

建立使用者

public int createUser (String name)

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

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

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

擲回
DeviceNotAvailableException

建立使用者

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

使用名字和提供的旗標建立使用者

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

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

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

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

傳回
int 已建立使用者的 ID

擲回
DeviceNotAvailableException

建立使用者

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

使用名字和提供的旗標建立使用者

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

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

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

傳回
int 已建立使用者的 ID

擲回
DeviceNotAvailableException

createUserNoThrow

public int createUserNoThrow (String name)

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

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

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

擲回
DeviceNotAvailableException

停用鍵盤鎖

public void disableKeyguard ()

嘗試停用鍵盤鎖。

首先,等待輸入調度作業準備就緒,這項作業會在 裝置回報的是 BOOT_COMPLETE,但顯然是以非同步方式回報,原因是目前的架構 導入方式偶爾會有競爭狀況。則指令會傳送至關閉鍵盤保護功能 (有效) 僅限不安全的應用程式)

擲回
DeviceNotAvailableException

doFileExist

public boolean doesFileExist (String deviceFilePath)

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

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

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

擲回
DeviceNotAvailableException

doFileExist

public boolean doesFileExist (String deviceFilePath, 
                int userId)

輔助方法可判斷特定使用者裝置上的檔案是否存在。

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

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

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

擲回
DeviceNotAvailableException

dumpHeap

public File dumpHeap (String process, 
                String devicePath)

嘗試從 system_server 轉儲記憶體快照。呼叫端必須負責清理 擷取出來的檔案

參數
process String:要轉儲的裝置程序名稱。

devicePath String:裝置上要放入傾印檔的路徑。這必須是以下位置 有權允許應用程式。

傳回
File 包含報表的 ERROR(/File)。如果發生錯誤,則為空值。

擲回
DeviceNotAvailableException

getActiveApexes

public  getActiveApexes ()

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

傳回
目前已在裝置上啟用 ERROR(/Set) 個 (共 ApexInfo 個)

擲回
DeviceNotAvailableException

取得所有設定

public  getAllSettings (String namespace)

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

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

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

擲回
DeviceNotAvailableException

getAndroidId

public String getAndroidId (int userId)

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

參數
userId int

傳回
String

擲回
DeviceNotAvailableException

getAndroidIds

public  getAndroidIds ()

建立已找到相符使用者 ID 的 Android ID 對應。每位使用者都沒有保險 id 會找出與這個函式相關聯的 Android ID,因此部分使用者 ID 可能會與空值相符。

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

擲回
DeviceNotAvailableException

getAppPackageInfo

public PackageInfo getAppPackageInfo (String packageName)

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

參數
packageName String

傳回
PackageInfo 如果無法擷取資訊,則會改為 PackageInfonull

擲回
DeviceNotAvailableException

getAppPackageInfos

public  getAppPackageInfos ()

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

傳回
裝置已安裝 ERROR(/List)/PackageInfo

擲回
DeviceNotAvailableException

getBugreport

public InputStreamSource getBugreport ()

從裝置擷取錯誤報告。

實作此做法可確保在沒有 sdcard 的裝置上能繼續運作 (或尚未掛載 sdcard 的地方)。

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

getBugreportz

public InputStreamSource getBugreportz ()

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

僅支援「ADB 版本」>1.0.36 版

傳回
InputStreamSource 含有錯誤報告的 ZIP 檔案的 InputStreamSource,在 也會失敗

getCurrentFoldableState

public DeviceFoldableState getCurrentFoldableState ()

傳回裝置目前的摺疊式裝置狀態;如果發生問題,則傳回空值。

傳回
DeviceFoldableState

擲回
DeviceNotAvailableException

getCurrentUser

public int getCurrentUser ()

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

傳回
int

擲回
DeviceNotAvailableException

getFoldableStates

public  getFoldableStates ()

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

傳回

擲回
DeviceNotAvailableException

getInstalledPackageNames

public  getInstalledPackageNames ()

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

傳回
裝置目前已安裝 ERROR(/Set) 個套件名稱 (共 String 個)。

擲回
DeviceNotAvailableException

getKeyguardState

public KeyguardControllerState getKeyguardState ()

傳回物件即可取得鍵盤防護目前的狀態;如果不支援,則傳回空值。

傳回
KeyguardControllerState 包含鍵盤鎖狀態快照的 KeyguardControllerState 而且如果系統不支援 Keyguard 查詢,則傳回空值。

擲回
DeviceNotAvailableException

getMainUserId

public Integer getMainUserId ()

傳回主要使用者 ID。

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

擲回
DeviceNotAvailableException

getMainlineModuleInfo

public  getMainlineModuleInfo ()

取得裝置上安裝的主系列模組相關資訊。

傳回
裝置上目前已安裝 ERROR(/Set) 個主要模組 (共 String 個)。

擲回
DeviceNotAvailableException

getMaxNumberOfRunningUsersSupported

public int getMaxNumberOfRunningUsersSupported ()

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

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

擲回
DeviceNotAvailableException

getMaxNumberOfUsersSupported

public int getMaxNumberOfUsersSupported ()

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

傳回
int 整數,表示支援的使用者人數

擲回
DeviceNotAvailableException

getPrimaryUserId

public Integer getPrimaryUserId ()

傳回主要使用者 ID。

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

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot ()

擷取裝置的螢幕截圖。

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

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot (String format, 
                boolean rescale)

擷取裝置的螢幕截圖。建議改用「getScreenshot(String)」 並使用 JPEG 編碼縮小尺寸

參數
format String:支援的 PNG、JPEG

rescale boolean:是否應重新縮放螢幕截圖,以縮小產生的圖片尺寸

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

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot (String format)

擷取裝置的螢幕截圖。 建議使用 getScreenshot(format) 而非 JPEG 編碼以縮小尺寸

參數
format String:支援的 PNG、JPEG

傳回
InputStreamSource InputStreamSource螢幕截圖的格式,或 null 螢幕截圖失敗

擲回
DeviceNotAvailableException

取得螢幕截圖

public InputStreamSource getScreenshot (long displayId)

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

TODO:擴充上述實作方式來支援「format」然後「rescale」

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

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

擲回
DeviceNotAvailableException

getSetting

public String getSetting (String namespace, 
                String key)

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

參數
namespace String

key String

傳回
String

擲回
DeviceNotAvailableException

getSetting

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

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

參數
userId int

namespace String

key String

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

擲回
DeviceNotAvailableException

取得解除安裝套件名稱

public  getUninstallablePackageNames ()

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

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

擲回
DeviceNotAvailableException

getUserFlags

public int getUserFlags (int userId)

尋找並傳回特定使用者的旗標。 旗標定義於「android.content.pm.UserInfo」Android 開放原始碼專案中的類別。

參數
userId int

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

擲回
DeviceNotAvailableException

getUserInfos

public  getUserInfos ()

將 useId 對應至裝置上的 UserInfo。如果裝置的輸出內容不如預期,就會擲回 DeviceRuntimeException

傳回
UserInfo 物件清單的內容。

擲回
DeviceNotAvailableException

getUserSerialNumber

public int getUserSerialNumber (int userId)

如果出現與 UserId 相關聯的序號,則傳回相關聯的序號;如為其他情況,則傳回 -10000。

參數
userId int

傳回
int

擲回
DeviceNotAvailableException

有功能

public boolean hasFeature (String feature)

確認裝置是否支援該功能。

參數
feature String:應該為「feature:」的格式或「

傳回
boolean 如果有特徵,則為「true」,否則傳回「false」。

擲回
DeviceNotAvailableException

安裝套件

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

在裝置上安裝 Android 套件。

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

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

extraArgs String:要傳遞的額外引數。查看「ADB shell pm -h」期間 只要設定成「自動重新啟動」 和「在主機維護期間」選項即可

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

擲回
DeviceNotAvailableException

安裝套件

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

在裝置上安裝 Android 套件。

注意:僅可在需要明確控管執行階段權限的情況下, 安裝時間應呼叫這個函式。

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

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

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

extraArgs String:要傳遞的額外引數。查看「ADB shell pm -h」期間 只要設定成「自動重新啟動」 和「在主機維護期間」選項即可

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

擲回
DeviceNotAvailableException

安裝套件

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

在裝置上安裝 Android 套件。

注意:僅可在需要明確控管執行階段權限的情況下, 安裝時間應呼叫這個函式。

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

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

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

extraArgs String:要傳遞的額外引數。查看「ADB shell pm -h」期間 只要設定成「自動重新啟動」 和「在主機維護期間」選項即可

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

擲回
DeviceNotAvailableException

installPackageForUser

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

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

注意:僅可在需要明確控管執行階段權限的情況下, 安裝時間應呼叫這個函式。

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

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

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

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

extraArgs String:要傳遞的額外引數。查看「ADB shell pm -h」期間 只要設定成「自動重新啟動」 和「在主機維護期間」選項即可

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

擲回
DeviceNotAvailableException

installPackageForUser

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

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

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

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

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

extraArgs String:要傳遞的額外引數。查看「ADB shell pm -h」期間 只要設定成「自動重新啟動」 和「在主機維護期間」選項即可

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

擲回
DeviceNotAvailableException

安裝套件

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

參數
packageFiles

reinstall boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

安裝套件

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

參數
packageFiles

reinstall boolean

grantPermissions boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installPackagesForUser

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

參數
packageFiles

reinstall boolean

grantPermissions boolean

userId int

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installPackagesForUser

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

參數
packageFiles

reinstall boolean

userId int

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installRemotePackages

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

參數
remoteApkPaths

reinstall boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

installRemotePackages

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

參數
remoteApkPaths

reinstall boolean

grantPermissions boolean

extraArgs String

傳回
String

擲回
DeviceNotAvailableException

isAppEnumerationSupported

public boolean isAppEnumerationSupported ()

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

傳回
boolean 如果支援應用程式列舉,則為 True,否則傳回 false

擲回
DeviceNotAvailableException

isHeadlessSystemUserMode

public boolean isHeadlessSystemUserMode ()

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

傳回
boolean

擲回
DeviceNotAvailableException

isMainUserPermanentAdmin

public boolean isMainUserPermanentAdmin ()

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

傳回
boolean

擲回
DeviceNotAvailableException

isMultiUserSupported

public boolean isMultiUserSupported ()

決定是否支援多使用者。

傳回
boolean 如果支援多位使用者,傳回 true,否則傳回 false

擲回
DeviceNotAvailableException

已安裝 isPackage

public boolean isPackageInstalled (String packageName)

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

參數
packageName String

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

擲回
DeviceNotAvailableException

已安裝 isPackage

public boolean isPackageInstalled (String packageName, 
                String userId)

查詢裝置的特定套件名稱和指定使用者 ID,確認其目前是否 無論該使用者是否安裝

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

userId String:要檢查套件的安裝目標使用者 ID。如果為空值,主要使用者 不會使用 0

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

擲回
DeviceNotAvailableException

isUserRunning

public boolean isUserRunning (int userId)

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

參數
userId int

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

擲回
DeviceNotAvailableException

使用者次要

public boolean isUserSecondary (int userId)

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

參數
userId int

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

擲回
DeviceNotAvailableException

isUserVisible

public boolean isUserVisible (int userId)

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

「顯示」則是指與「人類」互動的使用者進而能 啟動活動 (通常位於預設畫面中)。

參數
userId int

傳回
boolean

擲回
DeviceNotAvailableException

isUserVisibleOnDisplay

public boolean isUserVisibleOnDisplay (int userId, 
                int displayId)

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

「顯示」則是指與「人類」互動的使用者進而能 在該畫面中啟動啟動活動

參數
userId int

displayId int

傳回
boolean

擲回
DeviceNotAvailableException

isVisibleBackgroundUsersOnDefaultDisplaySupported

public boolean isVisibleBackgroundUsersOnDefaultDisplaySupported ()

傳回裝置是否允許使用者在背景開啟 ERROR(/java.android.view.Display#DEFAULT_DISPLAY) 的背景啟動功能。

如果有,您可以呼叫 startVisibleBackgroundUser(int, int, boolean) 並傳遞 由 listDisplayIdsForStartingVisibleBackgroundUsers() 傳回的螢幕 ( 應包含 ERROR(/java.android.view.Display#DEFAULT_DISPLAY))。

傳回
boolean

擲回
DeviceNotAvailableException

isVisibleBackgroundUsers 支援

public boolean isVisibleBackgroundUsersSupported ()

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

如果有,您可以呼叫 startVisibleBackgroundUser(int, int, boolean) 並傳遞 螢幕是由 listDisplayIdsForStartingVisibleBackgroundUsers() 傳回的螢幕。

傳回
boolean

擲回
DeviceNotAvailableException

listDisplayId

public  listDisplayIds ()

根據「dumpsys」回報在裝置上的可用螢幕 ID 清單 SurfaceFlinger」。

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

擲回
DeviceNotAvailableException

listDisplayIdsForBeginVisibleBackgroundUsers

public  listDisplayIdsForStartingVisibleBackgroundUsers ()

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

傳回

擲回
DeviceNotAvailableException

列出使用者

public  listUsers ()

取得裝置上的使用者清單。如果輸出,就會擲回 DeviceRuntimeException 正常運作。

傳回
使用者 ID 清單

擲回
DeviceNotAvailableException

logBugreport

public boolean logBugreport (String dataName, 
                ITestLogger listener)

協助取得錯誤報告並記錄回報者的輔助方法。

參數
dataName String:要回報錯誤報告的名稱。

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

傳回
boolean 如果記錄成功,則為「true」,否則傳回「false」。

通知 Snapuserd

public void notifySnapuserd (SnapuserdWaitPhase waitPhase)

參數
waitPhase SnapuserdWaitPhase

postInvocationTearDown

public void postInvocationTearDown (Throwable exception)

針對裝置特定需求清除的額外步驟,將在叫用後執行 因此,在執行復原作業

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

移除管理員

public boolean removeAdmin (String componentName, 
                int userId)

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

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

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

傳回
boolean 如果成功則傳回「是」,否則傳回「否」。

擲回
DeviceNotAvailableException

移除擁有者

public void removeOwners ()

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

擲回
DeviceNotAvailableException

移除使用者

public boolean removeUser (int userId)

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

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

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

擲回
DeviceNotAvailableException

setDeviceOwner

public boolean setDeviceOwner (String componentName, 
                int userId)

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

參數
componentName String:裝置管理員成為裝置擁有者的權限。

userId int:裝置擁有者所屬使用者的身分。

傳回
boolean 如果成功則傳回「是」,否則傳回「否」。

擲回
DeviceNotAvailableException

設定

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

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

參數
namespace String

key String

value String

擲回
DeviceNotAvailableException

設定

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

將設定值新增至特定使用者的命名空間。部分設定將只能使用 。 命名空間必須是下列其中一個:{"system", "secure", "global"}

參數
userId int

namespace String

key String

value String

擲回
DeviceNotAvailableException

關機 Microdroid

public void shutdownMicrodroid (ITestDevice microdroidDevice)

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

參數
microdroidDevice ITestDevice

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

startUser

public boolean startUser (int userId)

如果特定使用者目前已停止,在背景啟動該使用者。如果使用者已具備 在背景執行,因此屬於 NOOP。

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

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

擲回
DeviceNotAvailableException

startUser

public boolean startUser (int userId, 
                boolean waitFlag)

如果特定使用者目前已停止,在背景啟動該使用者。如果使用者已具備 在背景執行,因此屬於 NOOP。可能提供額外標記以等待 要生效的作業

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

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

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

擲回
DeviceNotAvailableException

startVisibleBackgroundUser

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

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

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

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

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

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

傳回
boolean true:如果使用者成功啟動畫面,就會在背景顯示。

擲回
DeviceNotAvailableException

stopUser

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

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

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

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

forceFlag boolean:強制停止使用者。

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

擲回
DeviceNotAvailableException

stopUser

public boolean stopUser (int userId)

停止特定使用者。如果使用者已停止服務,此方法將視為 NOOP。 無法阻止目前的使用者和系統使用者。

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

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

擲回
DeviceNotAvailableException

支援 Microdroid

public boolean supportsMicrodroid ()

檢查執行 microdroid 的先決條件。

傳回
boolean 如果符合先決條件,則會傳回 true,否則會傳回 false。

支援 Microdroid

public boolean supportsMicrodroid (boolean protectedVm)

檢查執行 microdroid 的先決條件。

參數
protectedVm boolean:如果 microdroid 打算在受保護的 VM 上執行,則傳回 true。

傳回
boolean 如果符合先決條件,則會傳回 true,否則會傳回 false。

SwitchUser

public boolean switchUser (int userId)

切換至預設逾時的另一個 UserId。switchUser(int, long)

參數
userId int

傳回
boolean 如果新的 userId 與 userId 提供者相符,則傳回「是」。否則傳回「否」。

擲回
DeviceNotAvailableException

SwitchUser

public boolean switchUser (int userId, 
                long timeout)

切換到另一個設有逾時期限的 UserId。 成功變更使用者後,嘗試停用鍵盤鎖。

參數
userId int

timeout long:在切換使用者失敗前等待 false。

傳回
boolean 如果新的 userId 與 userId 提供者相符,則傳回「是」。否則傳回「否」。

擲回
DeviceNotAvailableException

採用錯誤報告

public Bugreport takeBugreport ()

取得錯誤報告,並在 Bugreport 物件中傳回以進行處理。傳回空值 以備不時之需需要透過 Bugreport.close() 清除 Bugreport 物件中參照的檔案。

傳回
Bugreport

解除安裝套件

public String uninstallPackage (String packageName)

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

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

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

擲回
DeviceNotAvailableException

解除安裝套件 ForUser

public String uninstallPackageForUser (String packageName, 
                int userId)

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

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

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

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

擲回
DeviceNotAvailableException

waitForSnapuserd

public void waitForSnapuserd (SnapuserdWaitPhase currentPhase)

參數
currentPhase SnapuserdWaitPhase

擲回
DeviceNotAvailableException

保護方法

建立剖析器

protected AaptParser createParser (File appFile)

參數
appFile File

傳回
AaptParser

多廣告重新啟動 (doAdbReboot)

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

執行 ADB 重新啟動。

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

reason String:用於重新啟動。

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

getBugreportInternal

protected InputStreamSource getBugreportInternal ()

傳回
InputStreamSource

getBugreportzInternal

protected File getBugreportzInternal ()

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

傳回
File

getCheckNewUserSleep

protected long getCheckNewUserSleep ()

公開測試。

傳回
long

getHostCurrentTime

protected long getHostCurrentTime ()

公開測試

傳回
long

prePostBootSetup

protected void prePostBootSetup ()

允許各個裝置類型 (AndroidNativeDevice、TestDevice) 覆寫此方法: 再執行特定作業

擲回
DeviceNotAvailableException