Welcome! › Forums › Unity Plugins › In-App Web Browser › Show status bar
Tagged: viagra nebo cialis enfopay
- This topic has 7 replies, 4 voices, and was last updated 5 years, 6 months ago by sido.
-
AuthorPosts
-
November 8, 2018 at 8:19 am #1266zx6150Participant
Hello. I’m using some plugins for showing status bar on Android & iOS. But, when I open the browser it switches to full screen. And when I close it switches back to non full screen mode. As I understood you using custom activity in your plugin.
Can you help me? How can I change status bar visible? At least for Android.
If it’s not so easy then give me a clue and I will try to found out.
Thanks in advance
November 22, 2018 at 1:41 pm #1271zx6150ParticipantUnfortunately, I haven’t found the solution yet. Maybe someone could help?
November 27, 2018 at 1:17 pm #1276PiotrKeymasterI don’t know what are you trying achieve exactly. What’s the issue? You want to hide status bar in browser?
November 27, 2018 at 1:35 pm #1277zx6150ParticipantMy app works in non-fullscreen mode (you can see time at the upper side). But when I open browser it change to fullscreen. How can I fix that?
- This reply was modified 6 years ago by zx6150.
November 28, 2018 at 8:09 pm #1284PiotrKeymasterOh I see. Plugins hides status bar apparently. Probably it requires some tweak but that would take time. Is this something you could modify by yourself if I give you access to code?
Btw… why are you using Unity for such app?
November 28, 2018 at 9:25 pm #1285zx6150ParticipantI can try to fix it. At least for Android (I haven’t test for iOS yet).
Why Unity? Because I’m a Unity developer and I haven’t experience in Android/iOS native development. (once I changed a bit Unity Android plugin for my purpose. Probably, I will do it again) ) And I’m doing this app for my client, which need iOS & Android app.
- This reply was modified 6 years ago by zx6150.
February 27, 2019 at 3:52 am #1397unicoeParticipantHi!
Try to use this:AndroidStatusBar.cs and AppStatusBar.cs:
using System;
using System.Collections.Generic;
using UnityEngine;public class AndroidStatusBar
{
// Enums
public enum States
{
Unknown,
Visible,
VisibleOverContent,
TranslucentOverContent,
Hidden,
}// Constants
private const uint DEFAULT_BACKGROUND_COLOR = 0xff000000;#if UNITY_ANDROID
// Original Android flags
private const int VIEW_SYSTEM_UI_FLAG_VISIBLE = 0; // Added in API 14 (Android 4.0.x): Status bar visible (the default)
private const int VIEW_SYSTEM_UI_FLAG_LOW_PROFILE = 1; // Added in API 14 (Android 4.0.x): Low profile for games, book readers, and video players; the status bar and/or navigation icons are dimmed out (if visible)
private const int VIEW_SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; // Added in API 14 (Android 4.0.x): Hides all navigation. Cleared when theres any user interaction.
private const int VIEW_SYSTEM_UI_FLAG_FULLSCREEN = 4; // Added in API 16 (Android 4.1.x): Hides status bar. Does nothing in Unity (already hidden if “status bar hidden” is checked)
private const int VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE = 256; // Added in API 16 (Android 4.1.x): ?
private const int VIEW_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512; // Added in API 16 (Android 4.1.x): like HIDE_NAVIGATION, but for layouts? it causes the layout to be drawn like that, even if the whole view isn’t (to avoid artifacts in animation)
private const int VIEW_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; // Added in API 16 (Android 4.1.x): like FULLSCREEN, but for layouts? it causes the layout to be drawn like that, even if the whole view isn’t (to avoid artifacts in animation)
private const int VIEW_SYSTEM_UI_FLAG_IMMERSIVE = 2048; // Added in API 19 (Android 4.4): like HIDE_NAVIGATION, but interactive (it’s a modifier for HIDE_NAVIGATION, needs to be used with it)
private const int VIEW_SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096; // Added in API 19 (Android 4.4): tells that HIDE_NAVIGATION and FULSCREEN are interactive (also just a modifier)private static int WINDOW_FLAG_FULLSCREEN = 0x00000400;
private static int WINDOW_FLAG_FORCE_NOT_FULLSCREEN = 0x00000800;
private static int WINDOW_FLAG_LAYOUT_IN_SCREEN = 0x00000100;
private static int WINDOW_FLAG_TRANSLUCENT_STATUS = 0x04000000;
private static int WINDOW_FLAG_TRANSLUCENT_NAVIGATION = 0x08000000;
private static int WINDOW_FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = -2147483648; // 0x80000000; // Added in API 21 (Android 5.0): tells the Window is responsible for drawing the background for the system bars. If set, the system bars are drawn with a transparent background and the corresponding areas in this window are filled with the colors specified in getStatusBarColor() and getNavigationBarColor()// Current values
private static int systemUiVisibilityValue;
private static int flagsValue;
#endif//Properties
private static States _statusBarState;
private static uint _statusBarColor = DEFAULT_BACKGROUND_COLOR;
private static bool _isStatusBarTranslucent;
private static bool _dimmed;static AndroidStatusBar()
{
applyUIStates();
applyUIColors();
}private static void applyUIStates()
{
if (Application.platform == RuntimePlatform.Android)
{
int newFlagsValue = 0;
int newSystemUiVisibilityValue = 0;// Apply dim values
if (_dimmed) newSystemUiVisibilityValue |= VIEW_SYSTEM_UI_FLAG_LOW_PROFILE;// Apply color values
if (_statusBarColor != DEFAULT_BACKGROUND_COLOR) newFlagsValue |= WINDOW_FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;// Apply status bar values
switch (_statusBarState)
{
case States.Visible:
_isStatusBarTranslucent = false;
newFlagsValue |= WINDOW_FLAG_FORCE_NOT_FULLSCREEN;
break;
case States.VisibleOverContent:
_isStatusBarTranslucent = false;
newFlagsValue |= WINDOW_FLAG_FORCE_NOT_FULLSCREEN | WINDOW_FLAG_LAYOUT_IN_SCREEN;
newSystemUiVisibilityValue |= VIEW_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
break;
case States.TranslucentOverContent:
_isStatusBarTranslucent = true;
newFlagsValue |= WINDOW_FLAG_FORCE_NOT_FULLSCREEN | WINDOW_FLAG_LAYOUT_IN_SCREEN | WINDOW_FLAG_TRANSLUCENT_STATUS;
newSystemUiVisibilityValue |= VIEW_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
break;
case States.Hidden:
newFlagsValue |= WINDOW_FLAG_FULLSCREEN | WINDOW_FLAG_LAYOUT_IN_SCREEN;
if (_isStatusBarTranslucent) newFlagsValue |= WINDOW_FLAG_TRANSLUCENT_STATUS;
break;
}
if (Screen.fullScreen) Screen.fullScreen = false;// Applies everything natively
setFlags(newFlagsValue);
setSystemUiVisibility(newSystemUiVisibilityValue);}
}private static void applyUIColors()
{
if (Application.platform == RuntimePlatform.Android)
{
runOnAndroidUiThread(applyUIColorsAndroidInThread);
}
}#if UNITY_ANDROID
private static void runOnAndroidUiThread(Action target)
{
using (var unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”))
{
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”))
{
activity.Call(“runOnUiThread”, new AndroidJavaRunnable(target));
}
}
}private static void setSystemUiVisibility(int value)
{
if (systemUiVisibilityValue != value)
{
systemUiVisibilityValue = value;
runOnAndroidUiThread(setSystemUiVisibilityInThread);
}
}private static void setSystemUiVisibilityInThread()
{
using (var unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”))
{
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”))
{
using (var window = activity.Call<AndroidJavaObject>(“getWindow”))
{
using (var view = window.Call<AndroidJavaObject>(“getDecorView”))
{
view.Call(“setSystemUiVisibility”, systemUiVisibilityValue);
}
}
}
}
}private static void setFlags(int value)
{
if (flagsValue != value)
{
flagsValue = value;
runOnAndroidUiThread(setFlagsInThread);
}
}private static void setFlagsInThread()
{
using (var unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”))
{
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”))
{
using (var window = activity.Call<AndroidJavaObject>(“getWindow”))
{
window.Call(“setFlags”, flagsValue, -1); // (int)0x7FFFFFFF
}
}
}
}private static void applyUIColorsAndroidInThread()
{
using (var unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”))
{
using (var activity = unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”))
{
using (var window = activity.Call<AndroidJavaObject>(“getWindow”))
{
window.Call(“setStatusBarColor”, unchecked((int)_statusBarColor));
}
}
}
}
#endif
public static States statusBarState
{
get { return _statusBarState; }
set
{
if (_statusBarState != value)
{
_statusBarState = value;
applyUIStates();
}
}
}public static bool dimmed
{
get { return _dimmed; }
set
{
if (_dimmed != value)
{
_dimmed = value;
applyUIStates();
}
}
}public static uint statusBarColor
{
get { return _statusBarColor; }
set
{
if (_statusBarColor != value)
{
_statusBarColor = value;
applyUIColors();
applyUIStates();
}
}
}
}/////////////////////////////
using UnityEngine;
using System.Collections;public class AppStatusBar : MonoBehaviour
{
public bool statusBar;
public AndroidStatusBar.States states = AndroidStatusBar.States.Visible;
// Use this for initialization
void Awake()
{
if (Application.platform == RuntimePlatform.Android)
{
AndroidStatusBar.dimmed = !statusBar;
AndroidStatusBar.statusBarState = states;
}
}
}Attach AppStatusBar.cs to a gameObject, and set the Taskbar visibility.
Try it.June 5, 2019 at 5:26 am #1564sidoParticipantI tried the method Unicoe showed but still did not see the status bar.
Are there any other steps needed?The Unity version is 2017.2.10f1.
The Android version is 7.2.1. -
AuthorPosts
- You must be logged in to reply to this topic.