block Home Button in Ice cream sandwich and jelly bean

跟風遠走 提交于 2019-11-26 14:02:55

问题


I am developing Lock screen where i want to disable Home button in ice cream sandwich and in Jelly bean , i can block it using following methods in android 2.2 , 2.3

  @Override
public void onAttachedToWindow() {
    // TODO Auto-generate method stub
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}

also tried this

   getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

Here i am also not getting event info via onPause Method or onKeyDown

But these methods done't work for me in ICS,Jelly bean if is there any method that can replace it then let me know


回答1:


Post ICS i.e. Android 4+, the overriding of the HomeButton has been removed for security reasons, to enable the user exit in case the application turns out to be a malware.

Plus, it is not a really good practice to not let the user navigate away from the application. But, since you are making a lock screen application, what you can do is declare the activity as a Launcher , so that when the HomeButton is pressed it will simply restart your application and remain there itself (the users would notice nothing but a slight flicker in the screen).

EDIT #1 : Here is another workaround, more suited to your needs.

EDIT #2 : Just came across this. Haven't tested it. But looks kinda promising. Not sure if it would work, but you could give it a try.




回答2:


There are few things that you can try:

  • You can set your activity single top, and start it over with clear to top flag when onPause() method is called, this will block the home button and opening other activities.

  • Listen to BOOT_COMPLETED broadcast to start your activity - this will protect you from users who will take the battery out of the device in order to reboot it.

  • Add Alarmmanager that will test every second if your app is alive and if it is not, then start it - This will protect you from userers that some how managed to close your app(may be with external tools).

Do this and no one be able to exit your app.




回答3:


I think it is impossible to detect and/or intercept the HOME button from within an Android app. This is built into the system to prevent malicious apps that cannot be exited.



来源:https://stackoverflow.com/questions/12436190/block-home-button-in-ice-cream-sandwich-and-jelly-bean

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!