如何使用UiAutomator关闭Android应用程序?

如何使用UiAutomator API关闭特定的Android应用程序? 就像当您手动按下“最近”按钮并滑动要关闭的应用程序一样。

最好的选择是使用getUiDevice.pressRecentApps,这将为您加载最近的应用程序,然后使用uiautomator查看器截取屏幕截图,您可以查看已加载的屏幕的xml。 然后,您可以使用此xml选择要使用的滑动对象

UiObject app = new UIObject(new UiSelector().resourceId("The id of the app"); app.swipeLeft(100); 

或者是对的

这应该可以关闭你的应用程序。 xml将取决于您使用的Android风格和设备。

更好的方式(不是设备,操作系统版本,UI或特定方向):

 Runtime.getRuntime().exec(new String[] {"am", "force-stop", "pkg.name.of.your.app"}); 

测试和使用Android 6.0的Nexus 5X

当它只是一个将在最近的应用程序列表中的应用程序时,这对我有用。

 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); } 

这就是我用uiautomator一次性杀死所有Android应用程序的方法:

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