注:
这是一个取巧的方式,有的手机上页面里明明有这个app,但是通过UiSelector.text()就是打不开,但是用手划拉一下屏幕就好使了,初步判断是没获取到焦点啥的。然后就想出了这个方法,解决部分手机根据App名字打不开App问题。先通过包名打开app再关闭App,这样屏幕就能获取焦点了,就可以顺利打开了。
正文阶段:
//需要一个Instrumentation对象
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
//Uidevice对象用来关闭App的
UiDevice device = UiDevice.getInstance(instrumentation);
//上下文
Context context = instrumentation.getContext();
//获取你的包名
Intent intent = context.getPackageManager().getLaunchIntentForPackage("App包名");
//intent设置一个flags
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
//上下文启动App
context.startActivity(intent);
启动app完事,下面是关闭App:
//用刚才的Device对象关闭即可,会抛出异常,包裹一下就行了
try { device.executeShellCommand("am force-stop com.ophone.reader.ui"); } catch (IOException e) { e.printStackTrace(); }