For security reasons I want to show a black (in dark mode) and white full screen (in light mode) when the app goes in the background.
The standard approach should probably be to use FLAG_SECURE but this will not cover the entire screen (e.g., if the status bar is of a different color you will see it) and the background color is not customizable.
After I also compared the solution created by common banks and finance apps like N26, Revolut, Unstoppable Domain, etc. I came to the conclusion that they are using something different. They are able to render a full black/white screen without content.
Which approach are these companies using?
I also tried to show a black view on top (listening to the onPause on the main activity) and removing it onResume and although the black view is added the screen shown in the recent apps is still the previous one.
I tried react-native and vanilla android apps.
I'm trying to remove the Home button and the Multithread button. The idea is to remove it completely from the running application, better if we can remove it completely from every application on the tablet we are working with. Using full-screen is not something that we want, since the user shouldn't be able to exit the full screen mode, even if he wants it (it's a custom commercial app, it's the desired behaviour for multiple reasons).
This is the result on a Nexus 10. We accomplished that by taking the SystemUI sources and changing them before compiling the CyanogenMod.
Unfortunately we have to replicate that in an Asus ZenPad 10, that has no CyanogenMod available. We have a version that allows us to create system applications, but change every application into a system application is not something that we want.
We have found in this link: http://developer.oesf.biz/em/developer/reference/eggplant/constant-values.html#android.view.View.STATUS_BAR_DISABLE_HOME
That there are flags for disabling the home button and the navigation button, but they are usable only with system applications.
We have tried to get the SystemUI.apk already compiled in the tablet, decompile it and change it. The problem is that or we have useless smali files or with have only res/ and AndroidManifest.xml files (Asus changed the SystemUI.apk into two apks of it own).
So... we are a little desperate here ahah. Looking for hints / ideas to try to remove that buttons. Better without recompiling or doing some strange thing.
This is possible using a combination of permissions like Immersive Full-Screen Mode combined with the SYSTEM_UI_FLAG_HIDE_NAVIGATION and SYSTEM_UI_FLAG_FULLSCREEN flags. These flags hide the navigation and status bar, now that you have a blank screen put a linear laoyout at the bottom of the screen with only the back icon visible, just to create the effect of what you want. ALSO note that it is important to understand that once the user swipes upwards the normal navigation bar will be visible(not sure if it can be handeled through intercept touch event).
Alternatively you can try out this solution mentioned here also
How to disable Home and other system buttons in Android?
also refer this github project(works if there is only a hardware navigation buttons)
https://github.com/shaobin0604/Android-HomeKey-Locker
Last But not the least There is an answer by commsware that throws more light on this subject might come in handy.
Not able disable Home button on specific android devices
Try Android for work APIs and refer here.Using this apis you can get full control of the device and disable whatever you want.The device can be used only for single app.
Corporate-owned, single-use (COSU) is a subset of the corp-liable scenario for shared or special-use devices. Unlike corp-liable devices that are associated with individual employees, COSU devices are associated with particular business functions. For example, a COSU device might be used as a kiosk.
You can also try to integrate custom MDM(Mobile device management) solution provided by OEMS/MDM vendors/MDM partners like Samsung, HTC, Airwatch etc. This work on devices prior to lollipop too and provide more APIs to control the device than provided by default android solution.
I know Samsung MDM/Knox solution is good and it has APIs to control each and every part of the device.Refer- http://www.samsung.com/levant/business/solutions-services/mobile-solutions/security/mobile-device-management.They have Kiosk mode which is similar to COSU.
You will ask permission to the user. In this car this is yourself. Be careful since you will have to implement a way back out of the application.
Reference: disable home
Or you just could buy a case to stick it around, so the buttons won't be visible...
use immerse mode, use this code in onResume() so that everytime you get back to your activity its ran and they are hid
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
Of course, you can't REMOVE any System Buttons like Power, Volume +/-, Home, Back or Menu. You can only hide or show Home, Back or Menu only when they are virtual(opposite to Solid Buttons).
Meanwhile, hiding the navigation bar is limited. It only can be completed on Android 4.0 and higher. So, if you want to do this, you need to use the SYSTEM_UI_FLAG_HIDE_NAVIGATION flag. This snippet hides both the navigation bar and the status bar:
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
And, if you want to set your application's content to appear behind the navigation bar, you need the SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION flag. You may also need to use SYSTEM_UI_FLAG_LAYOUT_STABLE to help your app maintain a stable layout.
i have tried the same for a long period of time and searched a lot
but as you know the HOME button is the only way for user to get out from
any app in any situation. its very risky to block that and google will not allow it.
One thing you can do is set your application as a launcher application then u can receive keyevent Home
I made an application for my Samsung device. Samsung phones generally have a menu button on the bottom side of the phone which is a problem for those devices who do not. I tried my app out on a Nexus, but since it did not have the physical menu button, I couldn't open the menu.
Now I want to make another option to to open the menu in my app. I though a slide out menu would be nice. I want to use the same menu but another way to open it. I want to be able to open it from the side of the screen by swiping to the right, and from the menu button.
P.S. Normally there is a titlebar on top of the screen in an app with a menu button/option on it to. But I hide my titlebar (in my AndroidManifest), so that's the issue why I need another solution..
Use Navigation Drawers for slide out menu. You can use Navigation for two menus, one from left other from right using different listview.
If you want to design a custom slide out menu using navigation drawer here is a tutorial.
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/
I am trying to implement swipe tabs in my application but don't know what is the best way to do it.I am confused as to whether I should action bar navigation bars or some other mechanism.
I want my application to have Scroll-able views like in the link below?
https://play.google.com/store/apps/details?id=com.asus.todolist
You can use uiautomatorviewer to determine what that app is using. My guess is that it is using a ViewPager with a PagerTabStrip for the tabs.
is anyone have an idea how to make tabs like the nexus one tabs from the weather/news app, and i mean the functionality which by flick the screen you could go to the next tab, Thanks
Video: http://www.youtube.com/watch?v=hIu6kCnZVF0
alt text http://www.gadget.pdamu.com/wp-content/uploads/2010/01/Google-Phone-Nexus-One-weather-apps.jpg
You can now do this out-of-the-box in the Android Compatibility library with a ViewPager: http://android-developers.blogspot.com/2011/08/horizontal-view-swiping-with-viewpager.html?m=1
ViewPager slides between Fragments much the same way ListViews scroll up and down with views.
If you're not interested in scrolling the tabs, there's an example in the SDK that uses a TabHost (instead of making the tabs themselves scrollable left-to-right), but you need not use a TabHost. You could, if you wanted horizontally-scrolling tabs, use a HorizontalScrollView with some buttons in it.
For an approach that doesn't use the compatibility lib, or fragments, see here: https://github.com/olibye/AndroViews
its called a Workspaces UI pattern more information about it and how to implement it here http://www.androiduipatterns.com/2011/06/android-ui-pattern-workspaces.html