我在服务中创建了一个浮动视图,当我触摸此视图时,我需要调度关键事件。
我发现view.dispatchKeyEvent(
)需要前景活动的上下文,而关键事件调度仅在活动为前景时才有效。
当你关闭/暂停活动并触摸视图时 - 没有任何反应,即使LogCat
中没有NPE。
有没有办法在主要活动之外使用这种方法?
答案 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