Android - 是否可以禁用主页按钮的单击

Vin*_*tti 61 android android-widget

我有一个应用程序,当它启动时我必须禁用Android设备上的所有按钮,我成功禁用了结束通话和其他.我需要禁用主页按钮单击.它不应该对点击产生任何动作.

任何建议高度赞赏

syn*_*nic 29

我非常确定Toddler Lock只使用BroadcastReciever并且监听Intent.ACTION_MAIN类别Intent.CATEGORY_HOME- 这就是为什么当你第一次启动它时,它会告诉你检查"将此应用程序用作默认值"框,并让你选择幼儿锁.

因此,它根本没有真正阻止Home按钮,它只是将自己设置为默认广播接收器:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
Run Code Online (Sandbox Code Playgroud)

当您启动Toddler Lock时,它可能会设置一个内部标志,如果您按下主页按钮,它只会将窗口置于前面.如果未设置该标志,则可能会显式启动Launcher.

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

  • 很抱歉对这个旧的评论,但只是为了纠正一些混乱 - 你不能通过广播接收器接收`startActivity()``Intents`.但是,另一个活动可以声明自己是一个HOME活动,然后允许用户在按下HOME按钮时选择主屏幕实现. (6认同)

小智 18

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

@override

public void onAttachedToWindow()
{  
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
       super.onAttachedToWindow();  
}
Run Code Online (Sandbox Code Playgroud)

编辑:

这适用于所有旧版本的android.但是不会ICS和果冻豆一起工作,会让你在app中崩溃

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

  • 幸运的是,这个安全漏洞已经在较新版本的Android中得到修复. (6认同)

Jea*_*ois 11

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

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
Run Code Online (Sandbox Code Playgroud)

HOME按钮将始终(重新)启动您的活动.在Froyo工作.

  • 我给了+1,因为它阻止退出,但是它让我选择我的应用程序是否是默认的启动器?宏碁平板电脑3.1 (2认同)

ami*_*ser 5

我找到了解决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"/>
Run Code Online (Sandbox Code Playgroud)

现在你的应用程序是一个备用的Launcher应用程序.

使用adb,并使用包管理器禁用启动器应用程序

pm disable com.android.launcher2
Run Code Online (Sandbox Code Playgroud)

现在主页按键将保持在同一屏幕上.


dav*_*oni 5

在这里,您可以找到我的Android示例应用程序,该应用程序在主页上保留.主页,后退,通话,电源按钮被禁用.用户只能通过输入密码来结束应用程序.

  • 最好只是将相关代码放到答案中,而不是让人们打开zip并搜索代码. (6认同)
  • "用户在完成此应用程序时必须选择默认的主管理器." - 如果你想要的只是为你自己的应用程序禁用按钮而不会弄乱发射器,那么这不是很有用. (3认同)