【问题标题】:Prevent home button from going to home screen when it's on lock-screen防止主页按钮在锁定屏幕时进入主屏幕
【发布时间】:2014-09-05 19:44:16
【问题描述】:

我正在尝试为 android 制作锁屏。每当我按下主页按钮时,它都会让我回到主屏幕。我尝试了来自 google play 的各种应用程序。 Go Locker 应用程序不会让您进入主屏幕,除非您解锁屏幕。我不希望我的应用程序返回主屏幕,除非我滑动屏幕解锁它。反正有做这个功能吗?已经3天了,我找不到任何关于它的信息。

非常感谢。

【问题讨论】:

    标签: android android-homebutton


    【解决方案1】:

    这里有一些代码:

    @Override
    public void onAttachedToWindow()
    {  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();  
    }
    

    使用此方法,HOME 按钮在此活动中停止工作(仅此活动)。然后你只需重新实现,因为它是一个正常的按钮事件。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        boolean res = super.onKeyDown(keyCode, event);
        switch (keyCode) {
        case KeyEvent.KEYCODE_HOME: {
            // Your Home button logic;
            return false;
        }
        return res;
    }
    

    警告: onAttachedToWindow() 覆盖实际上有效,但如果所有按钮都被禁用,将用户锁定,退出应用程序的唯一方法是移除电池,这可能会非常危险,所以正确编码,处理所有情况。

    遇到了这种覆盖主页按钮单击的方法,希望它对您有用:

    在 AndroidManifest.xml 中

    <activity
        ...
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            ....
        </intent-filter>
    </activity>
    

    您需要launchMode="singleTask",以便将意图传递给已运行的应用程序,而不是创建新实例。

    在活动中:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if (Intent.ACTION_MAIN.equals(intent.getAction())) {
            //your code goes here.
        }
    }
    

    你没有得到关键事件。

    【讨论】:

    • 我试过这样做,但它不起作用。它让我回到主屏幕。
    • 你确定这个方法被调用了吗?
    • 我已经编辑了代码,提到了两种方法,让我知道它是否适合你。
    • 第二部分有效,但有问题。如果我不在我的应用程序中时按下主页按钮(即我的 android 系统中的任何位置但不是应用程序),它会返回到应用程序。无论如何,非常感谢您的帮助。这段代码有一天可能会派上用场。
    • @Sid18 你解决了这个问题吗?我为此奋斗了一个多星期。但是找不到具体的东西。如果您解决了这个问题,请告知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多