来自Service的dispatchKeyEvent

时间:2014-01-07 14:43:14

标签: android service view keyevent

我在服务中创建了一个浮动视图,当我触摸此视图时,我需要调度关键事件。 我发现view.dispatchKeyEvent()需要前景活动的上下文,而关键事件调度仅在活动为前景时才有效。 当你关闭/暂停活动并触摸视图时 - 没有任何反应,即使LogCat中没有NPE。

有没有办法在主要活动之外使用这种方法?

2 个答案:

答案 0 :(得分:3)

如果我理解正确(您没有发布任何来源),您需要对所有应用程序进行浮动视图,以便在应用程序之外接收关键事件。

有一些项目显示了这种能力。 (forum-thread androidFloatingImage-repo

尝试使用此浮动视图示例来相互创建,或使用完全相同的。我想,使用我上面写的东西你可以正确使用关键事件的回调。希望它有所帮助;

答案 1 :(得分:1)

这可能有点太晚了,但我找到了解决方案。 (假设OP仍然想从浮动视图或服务中触发OS后退按钮。)

如果您已注册Accessibility Service,似乎可以告诉Android按后退按钮。 (一旦您的组件在Android中注册,用户必须在系统设置中明确启用它。因此,如果这只是您的应用程序的利基功能而不是关键功能,则可能是一种过度杀伤。)

完成注册.etc后。因此,您的后台服务可能会告诉辅助功能服务执行后退按钮,这可以通过调用

来完成

performGlobalAction( GLOBAL_ACTION_BACK )

来自辅助功能服务。

您需要 API Level 16 或更高版本才能实现此目的。

我还没有去测试这个,但根据文档,这应该可行。 尝试并使用了许多最新的设备。 (Kitkat,Marshmellow和Nouget)

我在Play商店找到了应用程序Back Button (No root),它似乎采用这种技术为后面的家庭.etc绘制软按钮。 (适用于LG Nexus 5X和三星Galaxy Tab A 2016)

HTH