我正在开发锁定应用程序。我必须让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" />
答案 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;为了使您的应用成为新的主屏幕。否则,您的应用将具有正常的应用行为。当您的应用程序用作主屏幕时,按主页按钮可打开您的应用程序。由于应用程序已经显示,因此不会发生任何事情,主页按钮看起来会被禁用。