我希望在我的应用运行时禁用Android设备home button
。
我尝试过以下代码,但它没有帮助:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
Toast.makeText(this, "You pressed the home button!",
Toast.LENGTH_LONG).show();
return false;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (Intent.ACTION_MAIN.equals(intent.getAction())) {
Log.i("MyLauncher", "onNewIntent: HOME Key");
}
}
答案 0 :(得分:11)
我认为如果符合您的要求,可以采用其他风格。通过将您的活动创建为家庭活动。如果要禁用主页按钮,并在按下主页按钮时将自定义应用程序活动显示为启动器。只需在清单中为要启动启动器的活动添加这些行。
<activity
android:name="com.example.TempActivity"
android:clearTaskOnLaunch="true"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:stateNotNeeded="true" >
<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>
添加并运行您的应用程序后。如果用户按下主页按钮,Android将询问您想要哪个启动器。然后你必须总是选择你的应用程序启动器。
如果你想完全禁用用户,那么他就无法移动到另一个屏幕,然后使用NoTitlebar将主题设置为全屏。
答案 1 :(得分:8)
您可以使用Android-HomeKey-Locker禁用HOME KEY和其他系统键(例如BACK KEY和MENU KEY)
注意强>
似乎该解决方案仅适用于具有硬主页键的设备
希望这会对您的申请有所帮助。感谢。
答案 2 :(得分:1)
您无法禁用主页按钮。
除非您将应用设置为主屏幕,否则无法拦截Android上的主页按钮。这是出于安全原因,因此恶意应用程序无法通过覆盖可以退出的所有按钮来接管您的设备。
主页按钮是导航到主屏幕的唯一简便方法。
如果您想处理HOME按钮,请实现主屏幕。
Not able disable Home button on specific android devices
通过commonsware检查答案
答案 3 :(得分:0)
您可以使用以下方法禁用Android中的Home键:
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}