Limitations on Android Devices
Secure Screen Limitations - Android 12 - 15 beta
Some applications use SECURE FLAG in their application activities. As a result, sensitive information displayed on the screen is protected from unauthorized access.
We work around the SECURE FLAG display restriction for Android 11 and below.
A new android security enhancement was introduced in Android 12 which only privileged processes can create a secure display (see the relevant Android source code).
As a result, non-privileged apps (Including ours) are blocked from receiving screen displays from secured screens.
Non-instrumented apps with secured screens do not have actual screens displayed. A black image is displayed instead (this includes setting and changing pin codes in the settings app).
In Android 12-14, secured screens supported in Instrumented mode.
To get screenshots from non-instrumented apps such as duo mobile, do one of the following:
- Build your application without the SECURE FLAG.
- Use the Manual instrumentation tool from the legacy SeeTest Automation product, with the -disableSecurityMode flag.
- Use Digital.ai's Screenshot from Secured Activity. (In Android 14, only Pixel, Samsung and OnePlus devices are supported).
OPPO Device Reboot
The USB connection type for OPPO devices is not saved and resets to "Charge Only" after reboot. To make the device usable again, the device setting must be changed manually, which requires physical access.
Therefore, reboot is not supported for OPPO devices.
Launching Chrome - Android 13 - 14
As of Android 13, when using Chrome Version < 110, launching chrome using capabilities (MobileBrowserType.CHROME or MobileBrowserType.CHROMIUM) results in an error.
Instead, use the package and activity name to launch the application.
The following code snippet can be used to launch older versions of Chrome on Android 13.
dc.setCapability("appPackage", "com.android.chrome");
dc.setCapability("appActivity", "com.google.android.apps.chrome.Main");
Chromedriver Limitation
When a web element appears on the page but you get the errors "An element could not be located on the page..." or "not clickable at point...", use this code:
By loadingImage = By.id(element_id);
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));
In-Application Scrolling Limitation
In some cases when ComposeView is used in an application, the views inside it may not be identified properly and therefore won't be able to be scrolled properly. If this issue occurs another scroll implementation that's disabled by default should be used. To enable the implementation:
- Add cloud.server.android-use-swipe-command=true to the cloud server's application.properties file.
- Restart the cloud server.
Advanced Instrumentation in Applications with Multiple Packages
Advanced instrumentation features are not supported when an application uses com.android.vending.splits
. Standard dump instrumentation is supported. These features are affected:
- Simulate Capture
- Touch ID
- Network Capture