我有一个应用程序,当它启动时,我必须禁用Android设备上的所有按钮,我成功地禁用结束呼叫和其他。我需要禁用主页按钮点击。它不应该产生任何点击动作。有什么建议吗?
toe950271#
我敢肯定,幼儿锁只是使用一个广播接收器,并听取Intent.ACTION_MAIN和类别Intent.CATEGORY_HOME-这就是为什么当你第一次启动它,它告诉你选中“使用此应用程序作为默认”框,并让你选择幼儿锁。所以,它并没有真正阻止主屏幕按钮,它只是将自己设置为默认的广播接收器:
Intent.ACTION_MAIN
Intent.CATEGORY_HOME
Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME);
当你启动ToddlerLock时,它可能会设置一个内部标志,如果你按下home键,它只会把窗口带到前面,如果没有设置标志,它可能会显式地启动Launcher。我希望这是有道理的。这只是一个理论,但我几乎100%肯定这是怎么做到的。
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?
ICS
rkue9o1l3#
在manifest.xml中为您的主要活动添加以下内容:
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.HOME" />
主页按钮将总是(重新)启动您的活动。工程在冷冻。
cyvaqqii4#
here你可以找到我的Android示例应用程序,它仍然在主页上。主页,返回,呼叫,电源按钮被禁用。用户只能通过键入密码结束应用程序。
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键将始终停留在同一屏幕。
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();
这对于制作自己的键盘守卫应用程序非常有效。
6条答案
按热度按时间toe950271#
我敢肯定,幼儿锁只是使用一个广播接收器,并听取
Intent.ACTION_MAIN
和类别Intent.CATEGORY_HOME
-这就是为什么当你第一次启动它,它告诉你选中“使用此应用程序作为默认”框,并让你选择幼儿锁。所以,它并没有真正阻止主屏幕按钮,它只是将自己设置为默认的广播接收器:
当你启动ToddlerLock时,它可能会设置一个内部标志,如果你按下home键,它只会把窗口带到前面,如果没有设置标志,它可能会显式地启动Launcher。
我希望这是有道理的。这只是一个理论,但我几乎100%肯定这是怎么做到的。
4xrmg8kj2#
将以下代码添加到您的Activity:
编辑:
这在所有旧版本的安卓系统中都有效。但是在
ICS
和果冻豆中不起作用,并且会给予你在应用程序中崩溃What does this 4 line java code means in android application?
rkue9o1l3#
在manifest.xml中为您的主要活动添加以下内容:
主页按钮将总是(重新)启动您的活动。工程在冷冻。
cyvaqqii4#
here你可以找到我的Android示例应用程序,它仍然在主页上。主页,返回,呼叫,电源按钮被禁用。用户只能通过键入密码结束应用程序。
4sup72z85#
我发现了一种解决HOME键的方法。对于您的应用程序,将清单设置为:
现在,您的应用程序是一个备用的Launcher应用程序。
使用adb,并使用包管理器禁用启动器应用程序
现在,按下Home键将始终停留在同一屏幕。
3vpjnl9f6#
Jeffreys帖子的进一步补充,这里有一些对我有效的东西(仍然允许半透明主题)
因为它使键盘守卫出现,你也可以只禁用键盘守卫,而应用程序正在用途:
这对于制作自己的键盘守卫应用程序非常有效。