我有一个应用程序,当它启动时,我必须禁用 Android 设备上的所有按钮,我成功禁用了结束通话和其他按钮。我需要禁用主页按钮单击。它不应该在点击时产生任何动作。
任何建议高度赞赏
我有一个应用程序,当它启动时,我必须禁用 Android 设备上的所有按钮,我成功禁用了结束通话和其他按钮。我需要禁用主页按钮单击。它不应该在点击时产生任何动作。
任何建议高度赞赏
我很确定 Toddler Lock 只使用 BroadcastReciever 并监听Intent.ACTION_MAIN
类别Intent.CATEGORY_HOME
- 这就是为什么当您第一次启动它时,它会告诉您选中“将此应用程序用作默认设置”框,并让您选择 toddler lock。
所以,它并没有真正阻止 Home 按钮,它只是将自己设置为默认广播接收器:
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
当您启动 Toddler Lock 时,它可能会设置一个内部标志,如果您按下主页按钮,它只会将窗口带到前面。如果未设置该标志,它可能会显式启动 Launcher。
我希望这是有道理的。这只是一个理论,但我几乎 100% 肯定它是这样完成的。
将以下代码添加到您的活动中:
@override
public void onAttachedToWindow()
{
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
编辑:
这适用于所有旧版本的android。但是在果冻豆中不起作用,ICS
并且会让您在应用程序中崩溃
将此添加到您的 manifest.xml 中以用于您的主要活动:
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
HOME 按钮将始终(重新)启动您的活动。在弗罗约工作。
我找到了解决 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,并使用包管理器禁用启动器应用程序
pm disable com.android.launcher2
现在 Home 键按下将始终保持在同一屏幕上。
在这里,您可以找到我的 Android 示例应用程序,它保留在主页上。主页、返回、通话、电源按钮被禁用。用户只能通过输入密码来结束应用程序。
Jeffreys 帖子的进一步补充,这对我有用(并且仍然允许半透明主题)
@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();
这非常适合制作您自己的键盘保护应用程序。