问题描述
当我点击智能手表的屏幕时,我有一项活动开始。有一个计时器和一堆会发生的事情,但这个过程至关重要,所以我正在处理某些可能会干扰事情流程的情况或事情。
所以基本上,我想防止我的手表的主页按钮在我的计时器运行时退出应用程序并转到主屏幕。我一直在查找这个,大多数人都说要覆盖 onBackpressed 方法。但这是后退按钮,我意识到该按钮是主页按钮而不是后退按钮。
frameLayout.setonTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
clicked = clicked + 1;
if (clicked == 2)
{
Toast.makeText(toolandmode.this,"Clicks:" + clicked,Toast.LENGTH_SHORT).show();
startTimer();
}
else if (clicked >= 4)
{
Toast.makeText(toolandmode.this,Toast.LENGTH_SHORT).show();
AlertMessage();
}
}
return true;
}
});
这是我使用的主要方法
解决方法
只需覆盖 onBackPressed 函数即可。
@Override
public void onBackPressed ()
{
//Control the flow
}
,
如果它解决了您的问题,请使用第三方库。 链接在这里: https://github.com/shaobin0604/Android-HomeKey-Locker
,普遍的共识是,您无法覆盖 Wear OS 设备上的主页按钮行为,就像您无法覆盖 Android 手机上的主页按钮一样。这是为了防止开发人员阻止用户离开应用程序而设计的。即使有一种骇人听闻的方法,这也不受官方支持,并且可能会在未来的操作系统版本中随时停止工作。我强烈建议不要这样做,因为它违背了设备的基本导航模型。
可以在 this blog post 中找到有关人们认为需要覆盖主页按钮的常见用例的更多详细信息和一些解决方法。