我的一个Android活动中有这个方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_BACK)
{
Log.d("Test", "Back button pressed!");
}
else if(keyCode == KeyEvent.KEYCODE_HOME)
{
Log.d("Test", "Home button pressed!");
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
但是,即使KEYCODE_HOME有效,log方法也不会触发.这适用于后退按钮.有谁知道这是为什么以及如何使这个工作?
在facebook chatheads中,这是facebook messenger应用程序的一部分,我注意到以下行为:据我所知,聊天头本身和打开的聊天屏幕都是服务的一部分.不涉及任何活动.
我怎么能确定?在我打开的聊天屏幕上按回家后,它被最小化回聊天头,我可以立即重新打开聊天屏幕.如果聊天屏幕是活动,则startActivity(intent)在按下主页按钮后重新打开活动将延迟活动的开始,如此处所指定:
在按下HOME按钮后从服务启动活动而没有延迟5秒
在我的服务onCreate方法中,我使用以下代码从服务中显示UI:
public class ServiceTest extends Service {
...
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(someView, params);
}
....
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何直接从显示用户界面的服务接收"按下主页按钮"事件?当用户按下主页按钮时,我想最小化我的视图(类似于Facebook聊天头).
我最近下载了ACDisplay锁屏应用程序:
https://play.google.com/store/apps/details?id=com.achep.ac显示
该应用程序在我的设备上显示覆盖图,同时也检测home button click到该覆盖图,activity因此我无法绕过锁定屏幕。它还可以完全隐藏recent button非根设备上的。那怎么可能?
我已经通过以下链接:
以及用于旧版本AndroidOR的所有解决方案,他们都说home无法检测到按钮单击,因为它可以被恶意应用程序使用。
该应用程序如何做到这一点?
有人可以共享示例代码/应用程序,说明如何防止用户在成功通过身份验证之前退出锁定屏幕应用程序吗?
谢谢。
我有一个应用程序,其中有4个活动.在应用程序,历史活动,即我导航的活动不应该被销毁,所以我在导航时不会调用finish().
但是当我按下HOME按钮时,我想要杀死所有活动,这样当我回到应用程序时,会显示索引屏幕或显示第一个活动而不是之前暂停的活动.
这里的问题似乎是,如何区分应用程序中的后台与HOME按钮.
我在其他问题中看到了很少的答案.变得更加困惑.
除了拦截HOME KEY PRESS之外还有其他方法,因为正如其他线程所建议的那样,
我不应该覆盖HOME键按下(因为它可能有副作用)
在Android Q中,用户可以启用全屏手势模式。我想检测设备是否处于全屏手势模式。我在文档中找不到任何内容。如何在运行时以编程方式进行操作?
Java或Kotlin语言的答案可以。
任何官方API或解决方法...