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);
}
7条答案
按热度按时间ztyzrc3y1#
更好的方法(不针对设备、操作系统版本、UI或方向):
在Android 6.0的Nexus 5X上进行了测试和工作
pb3s4cty2#
最好的选择是使用getUiDevice.pressRecentApps,这将为您加载最近的应用程序,然后使用uiautomator查看器进行截图,这样您就可以查看已加载的屏幕的xml。然后您可以使用此xml选择要使用滑动的对象
或右侧
这应该能够关闭你的应用程序。xml将取决于你使用的android风格和设备。
umuewwlo3#
这就是我如何杀死所有的Android应用程序一次与uiautomator:
khbbv19g4#
基于@user597159的解决方案,我得到了以下命令,以关闭泛指el 2 for Firebase测试实验室(即“walleye”设备类型)上的所有应用程序:
请注意,像素2上的拼写为“Clear all”,而不是“CLEAR ALL”。
我无法让其他一些解决方案工作。我得到了
UiObjectNotFoundException
的以下内容:并且还为:
换句话说,对于尝试在应用上向上滑动以关闭像素2的这些方法,
app.exists()
返回false。krugob8w5#
当只有一个应用程序将出现在最近的应用程序列表中时,这对我很有效。
krugob8w6#
这里有一个类似于this answer的Kotlin答案。它向UiDevice添加了一个扩展函数来清除所有任务。我在泛指el 2模拟器上测试了这个。
oo7oh9g97#
因此,我采取了一个更全面的方法,这在它似乎相当不可靠的其他答案。我使用了很多自定义扩展,所以会尝试张贴他们中的大部分:
注:我不太喜欢一些文字,因为它取决于手机上的语言,可以是不同的。我也更喜欢这种自定义滑动时间的方法,因为我知道有多少任务大约我需要清除了大部分时间。有显示应用程序启动器的副作用,但谁在乎。没有找到一种方法来检测它取消滑动尚未。