服务有 onBackPressed() 替代方案吗?

问题描述 投票:0回答:3

我知道服务无法实现返回键按下,并且我理解其基本原理。但是有一个名为 SideBar(在 Play Store 上)的 app 可以对后退键按下做出反应。它是一项将视图添加为系统覆盖并在按下后退键时删除视图的服务。谁能解释一下这是如何完成的吗?

这是另一个做得很好的应用程序。我在网上搜索过,但没有找到解决这个问题的方法。有什么想法吗?

android service back
3个回答
0
投票

这可能是使用 系统警报窗口完成的 - 因此该服务创建并管理一个添加到窗口管理器的窗口,该窗口上设置了自定义 callback


0
投票

在另一个类似问题上找到答案这里

view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
            removeView();
        }
        return false;
    }
});

-2
投票

这里 是在服务中添加视图的很好的例子,如果你想在服务中你也可以使用监听器。

我也在寻找服务中的侦听器实现,终于找到了。

记得添加权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

并添加您的服务等级

<application>
.
 .
  <service android:name=".YourServiceClass"></service>
 .
.
</application>

在 AndroidManifest.xml 中。

© www.soinside.com 2019 - 2024. All rights reserved.