如何Android主页按钮事件或已禁用

时间:2018-03-16 17:21:05

标签: android android-homebutton

我正在开发锁定应用程序。我必须让Home Button被动。我写了一个可访问性服务。三星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" />

1 个答案:

答案 0 :(得分:0)

主页按钮显示&#39; home&#39;屏幕是一个应用程序。

所以阻止&#39;阻止&#39; “主页”按钮用于替换“家庭”主页。通过您自己的应用程序

在你的宣言中:

<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>

当您的应用程序安装完毕后,系统会询问用户他想要使用哪个主屏幕。他必须选择您的应用并检查“始终”#39;为了使您的应用成为新的主屏幕。否则,您的应用将具有正常的应用行为。当您的应用程序用作主屏幕时,按主页按钮可打开您的应用程序。由于应用程序已经显示,因此不会发生任何事情,主页按钮看起来会被禁用。