Android模拟从服务中反向按下

时间:2015-04-10 21:56:58

标签: android android-intent

我正在开发一个utilitiy应用程序,它将为用户自动执行某些任务,例如打开应用程序然后返回上一个活动。

对于此特定功能,我有一个后台服务,它通过startActivity()启动第三方活动,等待几秒钟让活动完全加载,然后通过模拟按下后退按钮将用户带回来。

我很高兴按下Back按钮按下仿真。我不想只启动Launcher活动将用户带到主屏幕。我希望他回到他上次使用的东西。

2 个答案:

答案 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));