我需要在Android应用程序中禁用Home和其他系统按钮.
例如: MX Player(见谷歌播放) -你可以按"锁定"在播放器屏幕上的图标,并锁定所有的硬件和软件系统的按钮.
它工作正常,没有根本.
我在一些具有不同Android版本的设备上测试了它.我试图拆解Kids Lock(插件),但不知道它是如何工作的.
我需要像Kids Lock(插件)这样的解决方案MX Player: - 禁用Home,Back和所有其他系统按钮.
有什么建议?
我想知道我是否可以覆盖背部和主页按钮的动作是一些情况.通常这些按钮应该像往常一样反应,但在某些情况下,某些设置为真,我想覆盖按钮并让它们调用我自己的方法.
我使用这两种方法来覆盖这些按钮:
@Override
public void onBackPressed() {
// call my backbutton pressed method when boolean==true
}
@Override
public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
// call my homebutton pressed method when boolean==true
}
Run Code Online (Sandbox Code Playgroud) 我正在为一家公司制作专有应用程序,该应用程序永远不会将其发布到Ice Cream Sandwich(Android 4.0)中的Android Market(或我现在认为的Play商店).
我需要禁用Home,这样用户就无法恶意卸载软件或删除应用捕获的数据.这个最新版本是第一个用4.0编写的,以前的版本是用2.2和3.2编写的.
为了禁用2.2中的Home按钮,我将应用程序关联为主页替换,因此该按钮刚刚重新打开应用程序,但我无法再使用此方法,因为这有点阻止我们对应用程序进行更新(我们不知道)我想让用户选择重新选择Home默认值,因为这会导致数据删除.
我在3.2中禁用Home按钮的代码是:
@Override
public void onAttachedToWindow() {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
Run Code Online (Sandbox Code Playgroud)
并且,在onCreate下:
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
Run Code Online (Sandbox Code Playgroud)
但是当我运行在我的3.2平板电脑上运行的相同代码时,它在我的4.0平板电脑上不起作用.
我想知道是否有一个新的API或方法可以达到与我目前在3.2实现中相同的效果.
感谢您的帮助或指导.
亚当
android android-3.0-honeycomb keyguard android-4.0-ice-cream-sandwich
我可以禁用Android 2.2,3.0等主页按钮.但相同的代码不适用于4.0.是否有任何解决方案禁用主页按钮?
@Override
public void onAttachedToWindow()
{
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Run Code Online (Sandbox Code Playgroud) android ×4
android-4.0-ice-cream-sandwich ×2
back-button ×1
button ×1
keyguard ×1
kiosk ×1
locking ×1
overriding ×1