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

swvgeqrz  于 2023-03-11  发布在  Android
关注(0)|答案(6)|浏览(197)

我有一个应用程序,当它启动时,我必须禁用Android设备上的所有按钮,我成功地禁用结束呼叫和其他。我需要禁用主页按钮点击。它不应该产生任何点击动作。
有什么建议吗?

toe95027

toe950271#

我敢肯定,幼儿锁只是使用一个广播接收器,并听取Intent.ACTION_MAIN和类别Intent.CATEGORY_HOME-这就是为什么当你第一次启动它,它告诉你选中“使用此应用程序作为默认”框,并让你选择幼儿锁。
所以,它并没有真正阻止主屏幕按钮,它只是将自己设置为默认的广播接收器:

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

当你启动ToddlerLock时,它可能会设置一个内部标志,如果你按下home键,它只会把窗口带到前面,如果没有设置标志,它可能会显式地启动Launcher。
我希望这是有道理的。这只是一个理论,但我几乎100%肯定这是怎么做到的。

4xrmg8kj

4xrmg8kj2#

将以下代码添加到您的Activity:

@override

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

编辑:

这在所有旧版本的安卓系统中都有效。但是ICS和果冻豆中不起作用,并且会给予你在应用程序中崩溃
What does this 4 line java code means in android application?

rkue9o1l

rkue9o1l3#

在manifest.xml中为您的主要活动添加以下内容:

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

主页按钮将总是(重新)启动您的活动。工程在冷冻。

cyvaqqii

cyvaqqii4#

here你可以找到我的Android示例应用程序,它仍然在主页上。主页,返回,呼叫,电源按钮被禁用。用户只能通过键入密码结束应用程序。

4sup72z8

4sup72z85#

我发现了一种解决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"/>

现在,您的应用程序是一个备用的Launcher应用程序。
使用adb,并使用包管理器禁用启动器应用程序

pm disable com.android.launcher2

现在,按下Home键将始终停留在同一屏幕。

3vpjnl9f

3vpjnl9f6#

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();

这对于制作自己的键盘守卫应用程序非常有效。

相关问题