检测按后退按钮

时间:2016-04-23 16:44:25

标签: android

我想检测按下服务中的后退按钮 。我刚试过这段代码,但它没有向我显示任何日志。有人可以解释一下为什么吗?我该怎么做才能让它发挥作用?

这样做的整个想法来自本教程http://www.kpbird.com/2013/03/android-detect-global-touch-event.html

public class MyService extends Service implements View.OnKeyListener{
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        LinearLayout touchLayout = new LinearLayout(this);
        // set layout width 30 px and height is equal to full screen
        LayoutParams lp = new LayoutParams(30, LayoutParams.MATCH_PARENT);
        touchLayout.setLayoutParams(lp);
        touchLayout.setBackgroundColor(Color.RED);
        touchLayout.setOnKeyListener(this);
        WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        // set layout parameter of window manager
        WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(
                30, // width of layout 30 px
                WindowManager.LayoutParams.MATCH_PARENT, // height is equal to full screen
                WindowManager.LayoutParams.TYPE_PHONE, // Type Phone, These are non-application windows providing user interaction with the phone (in particular incoming calls).
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // this window won't ever get key input focus
                PixelFormat.TRANSLUCENT);
        mParams.gravity = Gravity.LEFT | Gravity.TOP;

        mWindowManager.addView(touchLayout, mParams);
    }

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK){
            Log.v("Point","KeyCode_Back");
            return false;
        }
        return false;
    }
}

1 个答案:

答案 0 :(得分:1)

您的服务不是View,实现View.OnKeyListener无法提供您所需的功能。

服务旨在成为没有用户界面的活动"它在您的应用程序的后台运行。您可以使用Binders / Broadcasts与您的服务进行通信,但UI交互最好留给Activity / Fragments。

附件:
我想你正在尝试建立一个叠加层,就像你在评论中发布的链接一样。本教程是从2013年开始的,所以情况发生了变化。

一般情况下,Android系统会像下面描述的方法一样阻止App beheaviour。像这样编码,进入Lockscreen / Kiosk-App类别的行为,这被认为是恶意软件。

如果你想在你的应用程序中完成一个小的侧面菜单,你可以完全没有使用这样的服务。在您的应用程序之外,您仍然可以选择使用小部件,这些小部件比屏幕上的硬编码更加用户友好。