【问题标题】:How to Android Home Button Event or Disabled如何 Android 主页按钮事件或禁用
【发布时间】:2018-03-16 17:21:04
【问题描述】:

我正在开发锁应用程序。我必须使主页按钮被动。我写了一个无障碍服务。三星 j7 prime 也可以使用,但不能在主页按钮的手机上使用。我尝试了经典方法,但事实并非如此。请帮忙。

我的无障碍服务

    public class LockWindowAccessibilityService extends AccessibilityService {

    @Override
    protected boolean onKeyEvent(KeyEvent event) {

        LockScreen.getInstance().init(this);
        Log.i("#### KEY_CODE ####", String.valueOf(event.getKeyCode()));

        if (((LockApplication) getApplication()).lockScreenShow) {
            // disable home
            if (event.getKeyCode() == KeyEvent.KEYCODE_HOME || event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode() == KeyEvent.KEYCODE_APP_SWITCH) {
                return true;
            }
        }


        return super.onKeyEvent(event);
    }

    @Override
    protected boolean onGesture(int gestureId) {
        if(gestureId == GLOBAL_ACTION_HOME) {
            Log.d(TAG, "Gesture Home Pressed");
        }
        return super.onGesture(gestureId);
    }


    @Override
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
        Log.d("onAccessibilityEvent","onAccessibilityEvent");
        /*
        final int eventType = accessibilityEvent.getEventType();
        switch (eventType) {
            case AccessibilityEvent.TYPE_VIEW_CLICKED:

                break;
            case AccessibilityEvent.TYPE_VIEW_FOCUSED:

                break;
        }
        */
    }

    @Override
    public void onInterrupt() {

    }

}

我的 Accessbility.xml

    <?xml version="1.0" encoding="utf-8"?>
<accessibility-service
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/permission_accessibility_setting_description"
    android:accessibilityEventTypes="typeAllMask"
    android:packageNames="com.abc"
    android:accessibilityFlags="flagRequestFilterKeyEvents|flagIncludeNotImportantViews|flagReportViewIds"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:notificationTimeout="1000"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true" />

【问题讨论】:

    标签: android android-homebutton


    【解决方案1】:

    主页按钮显示“主页”屏幕,这是一个应用程序。

    因此,“阻止”主页按钮的唯一方法是用您自己的应用替换“主页”。

    在您的清单中:

    <activity
        android:name=".activities.MainActivity"
        ...>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- Set app as home -->
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    

    安装您的应用时,系统会询问用户他想使用哪个主屏幕。他必须选择您的应用并选中“始终”才能使您的应用成为新的主屏幕。否则,您的应用将具有正常的应用行为。当您的应用程序用作主屏幕时,按下主屏幕按钮会打开您的应用程序。由于该应用程序已经显示,因此不会发生任何事情,并且 Home 按钮看起来像是被禁用了。

    【讨论】:

    • 嗨@Eselfar,首先,感谢您的关注。我试过了,但有这样的问题;屏幕未锁定,如果按下主页按钮;我的应用程序始终处于打开状态:(我的应用程序只有在屏幕锁定时才会出现?
    • 啊好吧,我误会了。所以是的,我的解决方案不起作用:/
    • 当屏幕被锁定时,home键将处于非活动状态。当屏幕解锁时,home键将正常工作。实际上无障碍服务正在这样做,但主页按钮在屏幕上的手机上不起作用
    • 你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多