【问题标题】:Accessibility Service - Disable home button action android辅助功能服务 - 禁用主页按钮操作 android
【发布时间】:2018-07-09 09:31:22
【问题描述】:

我想使用无障碍服务禁用主页按钮操作。我已经阅读了来自https://developer.android.com/training/accessibility/service的文档

但不明白怎么做?谁能帮我解决这个问题

【问题讨论】:

  • 你试过什么?出了什么问题?
  • @Sander 我是新手,不知道从哪里开始

标签: android android-homebutton accessibilityservice


【解决方案1】:

使用任何教程创建您自己的无障碍服务并将此代码放入其中......

public class button_lock extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {

}

@Override
public void onInterrupt() {

}
@Override
protected boolean onKeyEvent(KeyEvent event) {
    if(event.getKeyCode()==KeyEvent.KEYCODE_HOME)
        return true;
    else
       return super.onKeyEvent(event);
}}

那就尽情享受吧……

【讨论】:

  • 这仅适用于带有物理触摸按钮的设备上的我。尝试使用其他只有导航栏的设备时,没有用。
  • 能否分享一下上面代码的xml配置文件?没有它,它根本不起作用,甚至没有收到任何密钥
  • @CesarMauri 很抱歉,但此代码仅适用于物理按钮
【解决方案2】:

在您的 Activity 中覆盖以下方法,

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

现在像这样处理关键事件,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if(keyCode == KeyEvent.KEYCODE_HOME)
    {
     Log.i("Home Button","Clicked");
    }
   if(keyCode==KeyEvent.KEYCODE_BACK)
   {
        finish();
   }
 return false;
}

【讨论】:

  • 无法解析符号 'TYPE_KEYGUARD',我应该使用 'TYPE_KEYGUARD_DIALOG' 来代替它吗?
  • 对于 14 以上的 Api 使用 @AndroidGuy
  • 好的,让我试一试,我不想在单击主页按钮时跳到主屏幕。 if(keyCode == KeyEvent.KEYCODE_HOME) { Log.i("Home Button","Clicked"); }
  • 不要在该条件内添加任何内容。 @AndriodGuy
【解决方案3】:

您可以通过在您的活动中添加此代码来禁用主页键:

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

但是,在显示对话框时这不起作用。要摆脱这个问题,只需将我的代码添加到您的 Dialog 对象中:

Disable home Key while Dialog showing

【讨论】:

  • 问题是关于无障碍服务而不是活动
猜你喜欢
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多