我正在开发一个utilitiy应用程序,它将为用户自动执行某些任务,例如打开应用程序然后返回上一个活动。
对于此特定功能,我有一个后台服务,它通过startActivity()
启动第三方活动,等待几秒钟让活动完全加载,然后通过模拟按下后退按钮将用户带回来。
我很高兴按下Back按钮按下仿真。我不想只启动Launcher活动将用户带到主屏幕。我希望他回到他上次使用的东西。
答案 0 :(得分:3)
起初我认为没有root权限就不可能,但我相信这可行:
try {
Runtime.getRuntime().exec("input keyevent " + KeyEvent.KEYCODE_BACK);
} catch (IOException e) {/*...*/}
更新: 我把它放在AsyncTask中进行测试,它在外部自己的活动时似乎不起作用:( This作为辅助服务工作,所以也许这是唯一的方法..
答案 1 :(得分:1)
使用其他应用的活动,强制他们拨打finish()
是不可能的。您可以从服务发送广播;然后任何开放的活动都可以收听广播,然后决定采取适当的行动。
Ineptus
答案的问题在于键盘可能具有输入事件值与其功能的不同映射。
请参阅:http://thecodeartist.blogspot.com/2011/03/simulating-keyevents-on-android-device.html
不确定这是否有帮助:
this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));