【发布时间】:2014-09-05 19:44:16
【问题描述】:
我正在尝试为 android 制作锁屏。每当我按下主页按钮时,它都会让我回到主屏幕。我尝试了来自 google play 的各种应用程序。 Go Locker 应用程序不会让您进入主屏幕,除非您解锁屏幕。我不希望我的应用程序返回主屏幕,除非我滑动屏幕解锁它。反正有做这个功能吗?已经3天了,我找不到任何关于它的信息。
非常感谢。
【问题讨论】:
标签: android android-homebutton
我正在尝试为 android 制作锁屏。每当我按下主页按钮时,它都会让我回到主屏幕。我尝试了来自 google play 的各种应用程序。 Go Locker 应用程序不会让您进入主屏幕,除非您解锁屏幕。我不希望我的应用程序返回主屏幕,除非我滑动屏幕解锁它。反正有做这个功能吗?已经3天了,我找不到任何关于它的信息。
非常感谢。
【问题讨论】:
标签: android android-homebutton
这里有一些代码:
@Override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
使用此方法,HOME 按钮在此活动中停止工作(仅此活动)。然后你只需重新实现,因为它是一个正常的按钮事件。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean res = super.onKeyDown(keyCode, event);
switch (keyCode) {
case KeyEvent.KEYCODE_HOME: {
// Your Home button logic;
return false;
}
return res;
}
警告: onAttachedToWindow() 覆盖实际上有效,但如果所有按钮都被禁用,将用户锁定,退出应用程序的唯一方法是移除电池,这可能会非常危险,所以正确编码,处理所有情况。
或
遇到了这种覆盖主页按钮单击的方法,希望它对您有用:
在 AndroidManifest.xml 中
<activity
...
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
....
</intent-filter>
</activity>
您需要launchMode="singleTask",以便将意图传递给已运行的应用程序,而不是创建新实例。
在活动中:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (Intent.ACTION_MAIN.equals(intent.getAction())) {
//your code goes here.
}
}
你没有得到关键事件。
【讨论】: