【问题标题】:Cordova Android Will Not Display StatusBarCordova Android 将不显示状态栏
【发布时间】:2019-11-22 14:53:13
【问题描述】:

我有一个问题一直在尝试解决,我在网上看到的解决方案都没有帮助。

非常简单,所以您认为解决方案也是如此。 在用于 Cordova 构建的 Android 平台上,我使用在 config.xml 中设置为首选项的 StatusBar 插件并显示它......是的,我试图让它在应用程序中显示而不是隐藏。每次应用运行时它似乎都被隐藏了。

在我的 InAppBrowser 选项字符串中,我还设置了 fullscreen=no,这样也不会影响它。

在模拟器和设备上运行应用程序都会将其隐藏。有人可能知道强制显示状态栏的解决方案吗?如果没有,这是什么原因?

onDeviceReady: function() {
StatusBar.overlaysWebView(true);
    //InAppBrowser Init
    var options = "location=no,fullscreen=no,zoom=no"
    Browser = cordova.InAppBrowser.open('http://www.app.example', '_self', options);

StatusBar 插件也被正确导入,可以在这里看到,这是通过 plugman 完成的:

这是我的 Config.xml 文件以获得更好的支持信息:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.pulse_co" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>
<feature name="InAppBrowser">
    <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
</feature>
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>
<feature name="Whitelist">
    <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
    <param name="onload" value="true" />
</feature>
<feature name="OneSignalPush">
    <param name="android-package" value="com.plugin.gcm.OneSignalPush" />
</feature>

<name>Pulse</name>
<description>
    Add Pulse App Description Here
</description>
<author email="email@test.com" href="https://support.example.com">
    Team
</author>
<content src="index.html" />
<access origin="https://root.domain.co*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-intent href="market:*" />
<preference name="loglevel" value="DEBUG" />
<preference name="StatusBarOverlaysWebView" value="true" />
<feature name="StatusBar">
    <param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
    <param name="onload" value="true" />
</feature>

【问题讨论】:

    标签: android cordova statusbar


    【解决方案1】:

    安装状态栏插件

    cordova plugin add cordova-plugin-statusbar
    

    如果还是不行,尝试在 deviceready 事件后调用 show

    StatusBar.show();
    

    删除

    StatusBar.overlaysWebView(true);
    

    或者设置为false

    同时删除

    <preference name="StatusBarOverlaysWebView" value="true" />
    

    或者设置为false

    OverlaysWebview 男性状态栏透明

    【讨论】:

    • 我在上面添加了更多支持信息。我确实安装了插件并添加了 StatucBar.show() 并没有效果。
    • 编辑了一些更可行的解决方案
    【解决方案2】:

    如果您使用'_blank',这些选项仅对InAppBrowser 有效。

    • '_self' = 在 Cordova 窗口中打开
    • '_blank' = 在 InAppBrowser 窗口中打开
    • '_system' = 在系统浏览器中打开

    【讨论】:

    • 其实我也试过了,和状态栏没什么区别
    • 试过什么?我刚刚解释了 InAppBrowser 插件的工作原理。没有一个选项是隐藏或显示状态栏
    • 我知道我只是提到我确实使用了 InAppBrowser 中的所有浏览器窗口标志。我很欣赏信息的花絮,但它并没有解决手头的问题,所以我不能接受它作为答案。谢谢。
    • 您可以添加您正在使用的首选项并确保您正确安装了插件吗?因为这比你提供的更相关
    • 这是一个非常好的观点,谢谢。我继续更新它以保存我的 config.xml 的内容,这是插件结构的屏幕截图,以查看它已被导入。希望这会有所帮助。自从我使用 Stackoverflow 已经有一段时间了
    【解决方案3】:

    接受的答案对我不起作用

    对于仍然面临这个问题的任何人, 根据Cordova plugin page

    fullscreen:设置InappBrowser WebView是否显示 全屏与否。在全屏模式下,状态栏是隐藏的。 默认值为yes

    所以,为了保持状态栏可见,请在选项中传递fullscreen: "no"

    let browser = this.inAppBrowser.create(
          "https://github.com"
          "_target",
          { zoom: "no", location: "no", fullscreen: "no" }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 2017-03-29
      • 2015-01-14
      • 2012-01-06
      • 2019-10-29
      • 2016-06-12
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多