Как закрыть приложение для Android с помощью UiAutomator?
Как я могу закрыть специальное приложение для Android с помощью API UiAutomator? Например, когда вы вручную нажимаете кнопку Recents и проводите пальцем по приложению, которое хотите закрыть.
4 ответов
лучшим вариантом было бы использовать getUiDevice.pressRecentApps, это загрузит последние приложения для вас, а затем сделать снимок экрана с помощью UIAutomator viewerso у вас есть представление xml экрана, который был загружен. Затем вы можете использовать этот xml для выбора объекта, который вы хотите провести с помощью
UiObject app = new UIObject(new UiSelector().resourceId("The id of the app");
app.swipeLeft(100);
и справа
Это должно быть в состоянии, чтобы закрыть приложение. Xml будет зависеть от того, какой стиль android вы используете и устройство.
лучший способ (не устройство, версия ОС, пользовательский интерфейс или ориентация):
Runtime.getRuntime().exec(new String[] {"am", "force-stop", "pkg.name.of.your.app"});
протестировано и работает на Nexus 5X с android 6.0
когда это только одно приложение, которое будет в списке последних приложений, это сработало для меня.
if(mDevice.pressRecentApps()) {
Thread.sleep(1000);
int startX = 300; int startY =835; int endX = 1000; int endY = 835; // co-ordinates refer to x-axis from left of screen to right.
int steps = 8;// speed at which the app closes
mDevice.swipe(startX,startY,endX,endY,steps);
}
вот как я убиваю все приложения для android сразу с помощью uiautomator:
public static void killApps()
{
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
try
{
device.pressHome();
device.pressRecentApps();
// Clear all isn't always visible unless you scroll all apps down
int height = device.getDisplayHeight();
int width = device.getDisplayWidth();
device.swipe(width/2,height/2, width/2, height, 50);
UiObject clear = device.findObject(new UiSelector()
.resourceId("com.android.systemui:id/button")
.text("CLEAR ALL")
);
if (clear.exists())
{
clear.click();
}
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (UiObjectNotFoundException e)
{
e.printStackTrace();
}
}