{ "id": "152268", "key": "TIMOB-19769", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2015-10-22T21:56:38.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "2019-cl", "Android", "module_navbar", "navigationbar", "qe-testadded" ], "versions": [ { "id": "16778", "description": "Release 5.0.1", "name": "Release 5.0.1", "archived": false, "released": true, "releaseDate": "2015-09-25" }, { "id": "16904", "description": "Release 5.0.2", "name": "Release 5.0.2", "archived": true, "released": true, "releaseDate": "2015-10-01" }, { "id": "16925", "description": "WatchKit Support--all going into 5.0 now", "name": "Release 5.0.0", "archived": true, "released": true, "releaseDate": "2015-09-16" } ], "issuelinks": [], "assignee": null, "updated": "2019-11-07T00:41:48.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "h6. Issue description:\r\nCustomer needs to hide the navigation bar (Not the title bar at the top but the bar at the bottom which has the back and home button). Nexus devices have this on screen navigation bar. Android allows developers to hide the navigation bar http://developer.android.com/training/system-ui/navigation.html. Customer primarily need to use it to hide the bar during launching of the app. The navigation bar cuts off the splash screen. \r\n\r\n**Image screen shot attached", "attachment": [ { "id": "57835", "filename": "Captura de pantalla 2015-12-22 a las 1.02.54 p.m..png", "author": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-12-23T16:45:53.000+0000", "size": 120170, "mimeType": "image/png" }, { "id": "57109", "filename": "SplashScreen.png", "author": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-22T21:56:08.000+0000", "size": 2677978, "mimeType": "image/png" } ], "flagged": false, "summary": "Android: Hide the Soft Navigation Bar", "creator": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "rramirez", "key": "rramirez", "displayName": " Ricardo Ramirez", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Android 5.1, 5.0 \r\nTitanium SDK 5.0.2.GA", "comment": { "comments": [ { "id": "372468", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/7552", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-09T02:10:57.000+0000", "updated": "2015-12-09T02:10:57.000+0000" }, { "id": "372570", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR merged.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-10T02:30:32.000+0000", "updated": "2015-12-10T02:30:32.000+0000" }, { "id": "374473", "author": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "body": "Putting {code}true{code} in the tiapp.xml does not hide the nav bar.\r\nchecked on android 6.0 and android 4.4.2 emulator.\r\n\r\nReopening\r\n\r\nTested on:\r\nnexus 6p (6.0.1)\r\nAndroid emulator (4.4.2)\r\nMac OSX El Capitan 10.11 (15A284)\r\nStudio: 4.4.0.201511241829\r\nTi SDK: 5.2.0.v20160111111831\r\nAppc NPM: 4.2.2\r\nApp CLI: 5.1.0\r\nNode v4.2.4\r\n", "updateAuthor": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "created": "2016-01-14T00:15:55.000+0000", "updated": "2016-01-14T00:15:55.000+0000" }, { "id": "374475", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~jlongton] Does this work on a non Android 6.0 for you?", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-14T00:37:01.000+0000", "updated": "2016-01-14T00:37:11.000+0000" }, { "id": "374479", "author": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "body": "[~msamah] No it doesn't work on any devices I have tested on, I have also tested on the nexus 5 (5.1.1) and got the same results", "updateAuthor": { "name": "jlongton", "key": "jlongton", "displayName": "Josh Longton", "active": true, "timeZone": "Europe/London" }, "created": "2016-01-14T00:57:44.000+0000", "updated": "2016-01-14T00:57:44.000+0000" }, { "id": "374515", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~jlongton]\r\nTested with 5.2.0.v20160111111831. No issues.\r\nMy app.js is empty so as to show only the splashscreen.\r\nHere's what is in my tiapp.xml (code below). Line 11 is where I set fullscreen to true. Do note, it takes a slight moment for the navigation bar to hide. (It's an animation) Once you click on the app, it will actually make the navigation bar appear again. It will only hide again when you reset the app.\r\n\r\nIf everything is okay, let me know and you can also resolve the ticket.\r\n{code:xml}\r\n\r\n\r\n sg.com.appcelerator\r\n CrashThis\r\n 1.0\r\n msamah\r\n http://www.appcelerator.com\r\n undefined\r\n 2015 by msamah\r\n appicon.png\r\n true\r\n false\r\n true\r\n dp\r\n \r\n \r\n \r\n UISupportedInterfaceOrientations~iphone\r\n \r\n UIInterfaceOrientationPortrait\r\n \r\n UISupportedInterfaceOrientations~ipad\r\n \r\n UIInterfaceOrientationPortrait\r\n UIInterfaceOrientationPortraitUpsideDown\r\n UIInterfaceOrientationLandscapeLeft\r\n UIInterfaceOrientationLandscapeRight\r\n \r\n UIRequiresPersistentWiFi\r\n \r\n UIPrerenderedIcon\r\n \r\n UIStatusBarHidden\r\n \r\n UIStatusBarStyle\r\n UIStatusBarStyleDefault\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n true\r\n true\r\n \r\n default\r\n \r\n \r\n \r\n \r\n true\r\n true\r\n true\r\n true\r\n false\r\n \r\n 5.2.0.v20160111111831\r\n\r\n\r\n{code}", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-14T03:57:24.000+0000", "updated": "2016-01-14T03:58:06.000+0000" }, { "id": "374907", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~jlongton] May I know the status for this?", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-20T04:28:21.000+0000", "updated": "2016-01-20T04:28:21.000+0000" }, { "id": "375421", "author": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~msamah]\r\n\r\nThere seems to be an edge case with this fix when using with Ti.Camera + overlay. Here is the crash dump.\r\n\r\n{code}\r\n01-28 19:41:58.344: E/TiApplication(19374): (main) [569,569] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.titanium.test/ti.modules.titanium.media.TiCameraActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content; Titanium 1.0,N/A,N/A\r\n01-28 19:41:58.344: E/TiApplication(19374): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.titanium.test/ti.modules.titanium.media.TiCameraActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread.access$800(ActivityThread.java:151)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.os.Handler.dispatchMessage(Handler.java:102)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.os.Looper.loop(Looper.java:135)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread.main(ActivityThread.java:5254)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat java.lang.reflect.Method.invoke(Native Method)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat java.lang.reflect.Method.invoke(Method.java:372)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)\r\n01-28 19:41:58.344: E/TiApplication(19374): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:302)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.Activity.requestWindowFeature(Activity.java:3605)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:627)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat ti.modules.titanium.media.TiCameraActivity.onCreate(TiCameraActivity.java:139)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.Activity.performCreate(Activity.java:5990)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)\r\n01-28 19:41:58.344: E/TiApplication(19374): \tat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)\r\n{code}\r\n\r\nHere is the app.js \r\n\r\n{code}\r\n var self = Ti.UI.createWindow();\r\n var cameraOverlay = Titanium.UI.createView({\r\n \tbackgroundColor: '#FF00FFAA'\r\n });\r\n \r\n var cameraOverlayButton = Titanium.UI.createImageView({\r\n bottom: 100,\r\n image: '/appcelerator_small.png',\r\n });\r\n cameraOverlay.add(cameraOverlayButton);\r\n \r\n cameraOverlay.addEventListener('click', function(e){\r\n \tTi.API.info(\"taking pic\");\r\n Ti.Media.takePicture();\r\n });\r\n \r\n self.addEventListener(\"postlayout\", postlayoutHandler);\r\n function postlayoutHandler(e) {\r\n self.removeEventListener(\"postlayout\", postlayoutHandler);\r\n Titanium.Media.showCamera({\r\n overlay: cameraOverlay,\r\n showControls: false,\r\n success: function(e) {\r\n Ti.API.info('# SUCCESS : '+ JSON.stringify(e));\r\n },\r\n cancel: function(e) {\r\n Ti.API.info('# CANCEL : '+e.error);\r\n \r\n },\r\n error: function(e) {\r\n Ti.API.info('# ERROR : '+ e.code +' : '+ e.error);\r\n \r\n },\r\n mediaTypes:Ti.Media.MEDIA_TYPE_PHOTO,\r\n });\r\n }\r\n self.open();\r\n{code}", "updateAuthor": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-28T12:08:42.000+0000", "updated": "2016-01-28T12:08:42.000+0000" }, { "id": "375424", "author": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~msamah] Since {{setSystemUiVisibility}} is safe to call after {{onCreate}}, it could be internally changing the window composition.\r\nUsing {{setFullscreen(true)}} after {{super.onCreate}} could work in this case since we are not using window flags to set full screen mode. \r\nhttps://github.com/ashcoding/titanium_mobile/blob/da0ba48a38b07142e53a99ca1af7023ee727af5f/android/modules/media/src/java/ti/modules/titanium/media/TiCameraActivity.java#L139", "updateAuthor": { "name": "ssombhatla", "key": "ssombhatla", "displayName": "Srikanth Sombhatla", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-28T12:32:17.000+0000", "updated": "2016-01-28T12:33:07.000+0000" }, { "id": "375682", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "5_2_X PR https://github.com/appcelerator/titanium_mobile/pull/7663\r\nFor your review, [~ssombhatla]", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-02T02:55:42.000+0000", "updated": "2016-02-02T05:48:00.000+0000" }, { "id": "375683", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~jlongton] The PR fix above is for a separate issue that is not related to what you mentioned. If your issue is okay, this ticket should be resolvable after [~ssombhatla] reviews for an edge case issue.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-02T02:56:58.000+0000", "updated": "2016-02-02T02:56:58.000+0000" }, { "id": "375696", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "PR7663 merged for 5_2_X.\r\n\r\nMaster PR: https://github.com/appcelerator/titanium_mobile/pull/7664", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-02T05:47:48.000+0000", "updated": "2016-02-02T05:47:48.000+0000" }, { "id": "375697", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Master PR merged.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-02T05:58:11.000+0000", "updated": "2016-02-02T05:58:11.000+0000" }, { "id": "376048", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the implementation.\r\nThe Soft NavigationBar hides when splash screen is visible with property {{true}} set to true in the tiapp.xml.\r\n\r\nChecked with the code below:\r\n{code}\r\nsetTimeout(function(){\r\n\tvar win = Ti.UI.createWindow();\r\n\twin.open();\r\n},5000);\r\n{code}\r\n\r\nClosing.\r\n\r\nEnvironment:\r\nAppc Studio : 4.5.0.201601262138\r\nTi SDK : 5.2.0.v20160203194918\r\nTi CLI : 5.0.6\r\nAlloy : 1.7.33\r\nMAC Yosemite : 10.10.5\r\nAppc NPM : 4.2.3-2\r\nAppc CLI : 5.2.0-242\r\nNode: 4.2.2\r\nNexus 6P - Android 6.0", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-02-04T22:40:10.000+0000", "updated": "2016-02-04T22:43:46.000+0000" }, { "id": "379521", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Reopening as the current implementation causes unwanted side-affects.\r\n\r\nBy using the existing {{}} option, you will not only hide the soft navigation bar, but also [select the {{Theme.AppCompat.NoTitleBar.Fullscreen}} theme|https://github.com/appcelerator/titanium_mobile/blob/master/android/templates/build/AndroidManifest.xml#L17].\r\n\r\nUnless you have specified a custom theme this will mean:\r\n\r\n* The app will hide the Android top status bar as well\r\n* The app will have no Action Bar\r\n* Because the app has no Action Bar you cannot use TabGroup (which requires Action Bar)\r\n\r\nWe will have to create a separate option for this, or maybe simply always hide the soft navigation bar on splash screens?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-11T10:30:30.000+0000", "updated": "2016-03-11T10:30:30.000+0000" }, { "id": "382314", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cng] can we look at the above comment for 5.4, maybe even 5.3 if possible since this change caused a regression?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-04-11T13:17:48.000+0000", "updated": "2016-04-11T13:17:48.000+0000" }, { "id": "382392", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~fokkezb] 5.3 would be extremely hard to get in. 5.4 is more realistic.\r\n\r\nIs there an ideal behaviour that is acceptable for this ticket to achieve? (Native Android app example)", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-04-12T02:30:16.000+0000", "updated": "2016-04-12T02:30:16.000+0000" }, { "id": "382441", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~msamah] I think ideally we should not automate anything the user can do himself in {{AndroidManifest.xml}} (preferably via {{tiapp.xml}} of course). Looking at the PRs for this ticket am I right this is indeed something we have to do right? Or could this be done via a theme as well?\r\n\r\nThe problem is that {{}} was used, which now triggers two different behaviours (see my comment above). I see different possible solutions:\r\n\r\n* Undo [this|https://github.com/appcelerator/titanium_mobile/blob/master/android/templates/build/AndroidManifest.xml#L17] since that can be done via {{AndroidManifest.xml}} using the builtin themes as well.\r\n* and/or for this ticket use a different (more descriptive) XML element/property, e.g. {{}}.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-04-12T06:50:09.000+0000", "updated": "2016-04-12T06:50:09.000+0000" }, { "id": "383886", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "The way this was handled in https://github.com/appcelerator/titanium_mobile/pull/7552/ was by setting setSystemUiVisibility(). This is seen here http://developer.android.com/training/system-ui/immersive.html. This is not done via the `AndroidManifest.xml` (or `tiapp.xml`).", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-04-26T07:26:17.000+0000", "updated": "2016-04-26T07:26:17.000+0000" }, { "id": "383888", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "I think might be a good suggestion. Will look into this.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-04-26T07:51:18.000+0000", "updated": "2016-04-26T07:51:18.000+0000" }, { "id": "384079", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~msamah] On hindsight I should never have restored {{}} and {{}} since this *can* be done through theme. Then we wouldn't have this problem now.\r\n\r\nBut before we introduce {{}} isn't this something the developer could set from code? Like {{Ti.UI.backgroundColor}}? We've been introducing/changing/deprecating/removing too many {{tiapp.xml}} stuff (run on main thread..)", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-04-27T14:50:25.000+0000", "updated": "2016-04-27T14:50:25.000+0000" }, { "id": "384139", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "That's a good point. I'll look into the possibility of setting it from code.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-04-28T02:26:28.000+0000", "updated": "2016-04-28T02:26:28.000+0000" }, { "id": "384554", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~fokkezb]\r\nTook a look more into this. For Splash Screen, at least in Android, this can't be done from code `app.js`. This is because the splash screen exists even before anything else is created there. Hence, the only other place that it can be manipulated from is the `tiapp.xml`. Please correct me if I'm wrong.\r\n\r\nWith that, i think {{fullscreen-splash}} is a reasonable addition to {{tiapp.xml}}. May I know where exactly (which PR) was done that you restored {{}} and {{}}. That would help me in implementing {{}}", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-05-03T08:37:09.000+0000", "updated": "2016-05-03T08:37:09.000+0000" }, { "id": "384577", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~msamah] this is done here:\r\n\r\nhttps://github.com/appcelerator/titanium_mobile/blob/master/android/templates/build/AndroidManifest.xml#L17", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-05-03T13:28:51.000+0000", "updated": "2016-05-03T13:28:51.000+0000" }, { "id": "385009", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~fmiao] that's the project template, I think [~msamah] is right for the place to read the value from?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-05-06T17:39:44.000+0000", "updated": "2016-05-06T17:39:44.000+0000" }, { "id": "446350", "author": { "name": "amit.mishra", "key": "amit.mishra", "displayName": "amit.mishra", "active": true, "timeZone": "America/Los_Angeles" }, "body": "how I detect soft navigation bar or hard navigation bar in android titanium \r\ni am facing the problem like when i create any tab bar its behind the soft navigation bar i am adding the bottom+45 height to show but in some devices navigation bar is outside like back button home button are in hardware buttons so my tab bar is so 45 up so how i detect when soft navigation bar is available its up and hardware buttons its bottom 0.\r\n", "updateAuthor": { "name": "amit.mishra", "key": "amit.mishra", "displayName": "amit.mishra", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-02-27T07:24:24.000+0000", "updated": "2019-02-27T07:24:24.000+0000" } ], "maxResults": 33, "total": 33, "startAt": 0 } } }