I'm working on an existing Android application for medical purposes.
The back button and home button should be disabled.
With the existing code, the back button is disabled.
For disabling the home button they used onAttachedWindow with LayoutParams TYPE KEYGUARD,
but this security hole is fixed since 4.0.
I tried a lot of similar questions, but none worked out for me.
What is the way to get this done these days?
Also, hiding the status bar on tablet (where the home & back button live) would do the trick,
so any suggestions there are equally helpful!
Update: also, free third party apps that do the hiding trick are okay!
This sounds like a kiosk or dedicated use kinda thing, yes? You want your app to "own" the tablet and prevent other usage? I did this for an app whose sole purpose was to act as a remote control for a custom device. Basically I created two apps, a "custom launcher" app and the app that did the remote control. It's probably possible to integrate the two, but I wanted to support both dedicated and non-dedicated use. Note that I gave the launcher app a password-protected way to access settings so that I could recover the tablet at any time.
You can find a number of tutorials that will guide you through creating a custom launcher, just strip out all the stuff that makes it a generic launcher and replace it with an image button or similar that launches the actual app, or replace the launcher activity with your main app activity. Warning: I never figured out how to remove the launcher except by going into the settings.
As for hiding the system bar (notifications and status icons at the top of the screen), you'll want to use a full-screen theme like #android:style/Theme.NoTitleBar.Fullscreen.
As for hiding the home button I took this approach:
View main_layout = this.findViewById(android.R.id.content).getRootView();
main_layout.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
Unfortunately the STATUS_BAR_HIDDEN flag is deprecated now, but I think some of the other options would have the same effect. Regardless, the best you can achieve within Android's intended use is to temporarily hide the navigation buttons (home and back). A tap on the screen will bring them back.
Related
I was using startLockTask() in a program but found out it could only be used for Android L. However I want my application to function in versions lower then 5.
Is there any way I can gain similar functionality?
Functionally, no. The point of screen pinning is to prevent the user from leaving your app. The user can't see or click on notifications, or use the home button to leave.
Visually, you can set the app to full screen,, and/or hide notification bar. You can also hide the soft keys on devices that don't have hardware buttons. However, people can always bring it back up.
EDIT: You can also disable the back button.
I'm developing an Android tablet app where I need to show fullscreen content. Entering and closing the app is done using a dedicated physical button on the device. When the button is pressed I want all other traces of the Android UI to disappear, and then reappear when we press the button again. I.e., a fullscreen app that is placed on top everything else.
Any ideas on how to achieve this? I've tried various approaches to no avail:
* Adding SYSTEM_UI_FLAGS* doesn't work for this purpose, as the SystemUI will reappear when touching the screen. Ideally we would also not like the animation when opening our fullscreen app.
* Adding a separate layer on top of what we believe is all other layers, but the SystemUI is still shown
Some kind of layering must be preserved. I.e., I need to show incoming call dialogs on top of the fullscreen app.
Please note: This question is about development in the framework/system part of Android. I'm not looking for answers on how to do it in regular user apps.
In my app, there is a activity where it is important that the system UI buttons (home, back, etc.) are not pressed, though it is ok if they are still visible. I have heard that there might be a way to achieve this, at least in 4.0 (I'm using 4.2).
A way to quickly and automatically return to the app if the buttons are pressed is also a correct answer, but seems less plausible. Thanks.
This is possible to override the home button by making your activity as home activity i.e
-- category android:name="android.intent.category.HOME"
but in this case android give user option to choose the app on launcher dialog where if user choose your application and click always, he will not be able to go to homescreen until you specifically provide a exit button oinside your app and reset it which you should definately do.
I am making a live wallpaper for android. I want to implement a function that allow user hide all the icon from the screen of android to show off the live wallpaper(User double click to screen -> hide all the icon). I made everything but I still dont know how to hide all the icons. Anyone know how?
Thank
This is not possible. You cannot attack the home screen, or other apps, in this fashion. A home screen may not even have "icons", depending upon its implementation.
You are welcome to write your own home screen, or perhaps partner with the developers of some replacement home screens, to have this feature implemented by the home screen.
Or, IIRC, there is a way to show a live wallpaper as the background of an activity, though I am not certain of the details. If that is indeed possible, to "show off the live wallpaper", you would offer an activity to do so, one that has nothing in the foreground.
The application that I'm developing must look like a launcher. I opened this topic because of I couldn't find the correct answer in whole topics that I looked at in Stack Overflow.
I want the application to disable or control whole buttons to exit this application. I disabled home and back button on Android 2.3 but it doesn't work on Android 4.0 (except for back button).
To conclude, I couldn't and I want to disable only home button on Android 4.0
Can you give an advice except the other answers?
There is no way to intercept the home button on Android, unless you make your app the home screen. This is for security reasons, so that malicious apps cannot take over your device by overriding all the buttons that can exit. The home button is the one sure shot way to be able to leave any app.
In short, no it's not possible, and even if it were, it is a serious disruption in what a user expects out of an app's behavior. You will have to go with making your app into a launcher if you want to achieve this.