Android – 是否可以禁用点击主页button
我有一个应用程序,当它启动时,我必须禁用Android设备上的所有button,我成功地禁用结束通话等。 我需要禁用主页button点击。 它不应该对点击产生任何行动。
任何build议高度赞赏
我很确定Toddler Lock只是使用BroadcastReciever并监听Intent.ACTION_MAIN
和Intent.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();
这对于制作自己的键盘保护程序非常有用。