无法检查Cordova App上的互联网连接

时间:2016-04-11 16:44:49

标签: android cordova networking

我正在尝试检查我的Cordova应用中的用户互联网连接,告诉他们他们是否没有互联网连接需要他们。我在安装之后找到并安装了这个插件https://github.com/apache/cordova-plugin-network-information,我进入我的主html页面添加了这个JS代码,但是我没有得到任何结果。我能做错什么?我有两个不同的例子,我试过没有运气以及我的android-manifest。我只做了我上面所描述的,现在知道还有其他的事情要去。我跑了一只log-cat但是找不到任何有用的信息。有没有其他方法来检查除此之外的互联网连接哪个更容易?任何帮助都是极好的!     

function checkConnection()
{
    this.platform.ready().then(() => {
    var networkState = navigator.connection.type;

    var states = {};
    states[Connection.UNKNOWN]  = 'Unknown connection';
    states[Connection.ETHERNET] = 'Ethernet connection';
    states[Connection.WIFI]     = 'WiFi connection';
    states[Connection.CELL_2G]  = 'Cell 2G connection';
    states[Connection.CELL_3G]  = 'Cell 3G connection';
    states[Connection.CELL_4G]  = 'Cell 4G connection';
    states[Connection.CELL]     = 'Cell generic connection';
    states[Connection.NONE]     = 'No network connection';

    alert('Connection type: ' + states[networkState]);

    });
}

checkConnection();

if(states[networkState] == "Unknown connection")
{
   //output saying the user needs an internet connection
}

</script>

我也试过......

    <script>

    document.addEventListener("offline", onOffline, false);

    function onOffline() {
        // Output saying Your internet connection is gone. Connect again
    }
</script>

我使用这些权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

1 个答案:

答案 0 :(得分:0)

查看您的用户是否已连接到互联网的最简单方法是使用在线和离线事件。我做了一个有效的例子,虽然你的实现几乎是正确的:

function onDeviceReady() {
    document.addEventListener("offline", onOffline, false);
    document.addEventListener("online", onOnline, false);
}

function onOffline() {
    alert("Offline");
}

function onOnline() {
    alert("Online");
}

需要注意几点:

  1. 注意在deviceReady触发后添加EventListeners!在我的例子中,我正在使用以下行:
  2. document.addEventListener('deviceready', onDeviceReady, false);

    1. 注意内联JavaScript代码:如果您使用的是内容安全策略或CSP,如果您尚未设置'unsafe-inline'指令,则可能会阻止内联JavaScript代码执行。在Chrome中,您会在javascript控制台中看到如下错误:
    2.   

      拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src'self'data:gap:https://ssl.gstatic.com'unsafe-eval'”。可以使用'unsafe-inline'关键字,散列('sha256-ZJzCdAlcRvBg / CUgBlBR0EJlHtXyQ / rPspGdZwNhwlw =')或nonce('nonce -...')来启用内联执行。另请注意,'script-src'未明确设置,因此'default-src'用作后备。

      您应该为您的代码创建一个javascript文件,并在您的HTML中引用它,而不是使用内联javascript。