Android – 是否可以禁用点击主页button

我有一个应用程序,当它启动时,我必须禁用Android设备上的所有button,我成功地禁用结束通话等。 我需要禁用主页button点击。 它不应该对点击产生任何行动。

任何build议高度赞赏

我很确定Toddler Lock只是使用BroadcastReciever并监听Intent.ACTION_MAINIntent.ACTION_MAIN类别 – 这就是为什么当你第一次启动它时,它会告诉你检查“使用这个应用程序作为默认值”框,并使你select幼儿锁。

所以,它并不是真的阻止了主页button,它只是把自己设置为默认的广播接收器:

 Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); 

当你启动幼儿锁,它可能会设置一个内部标志,如果你按下主页button,它只是把窗口放在前面。 如果标志没有设置,它可能明确启动启动器。

我希望这是有道理的。 这只是一个理论,但我几乎100%肯定这是如何完成的。

将以下代码添加到您的活动中:

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

编辑:

这适用于所有旧版本的android。 但不会ICS和果冻豆,并会给你在应用程序崩溃

这4行java代码在android应用程序中意味着什么?

在您的主要活动的manifest.xml中添加:

 <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.HOME" /> 

HOMEbutton将始终(重新)启动您的活动。 在Froyo工作。

在这里你可以find我的Android样本应用程序,坚持在主页上。 家庭,后退,通话,电源button被禁用。 用户只能通过input密码来结束应用程序。

我find了解决HOME键的方法。 为你的应用程序设置清单

 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.MONKEY"/> 

现在你的应用程序是一个备用的启动器应用程序。

使用adb,并使用软件包pipe理器禁用启动程序

 pm disable com.android.launcher2 

现在Home键按下将停留在同一个屏幕上。

杰弗里斯post的进一步补充,这里是我的工作(并仍然允许半透明的主题)

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

由于键盘上的键盘出现了,您也可以在应用程序正在使用时禁用键盘锁:

 KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); lock.disableKeyguard(); 

这对于制作自己的键盘保护程序非常有用。