簡體   English   中英

Phonegap / Cordova 3 Android:未定義連接

[英]Phonegap/Cordova 3 Android: Connection is not defined

我試着在推薦的setTimeout解決這個職位 ,但仍logcat中報道:

Uncaught ReferenceError: Connection is not defined

我已通過“ phonegap插件列表”檢查該插件確實已安裝。 config.xml包括:

<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
</feature>

我的清單包括:

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

(對不起,我似乎無法正確格式化上面的格式),但我繼續看到“未定義連接”。 我想念什么?

從phonegap文檔:

訪問功能

從3.0版開始,Cordova將設備級API實施為插件。 使用命令行界面中介紹的CLI的plugin命令,為項目添加或刪除此功能:

 $ cordova plugin add org.apache.cordova.network-information or $ phonegap plugin add org.apache.cordova.network-information 

並且,添加插件后,別忘了重建項目。

我通過定義連接擺脫了“未定義連接”參考錯誤。

科爾多瓦說

“通過navigator.connection公開的連接對象提供有關設備的蜂窩和wifi連接的信息。”

Cordova給了我一個有關如何使用cordova-plugin-network-information 的簡單示例

function checkConnection() {
    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]);
}

但是當我將其作為onClick事件運行時,出現了“未定義連接”引用錯誤。

所以我添加了let Connection = navigator.connection; 在函數內部,然后工作:

function checkConnection() {
    let Connection = navigator.connection;

    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]);
}

對我來說,解決方案是在“ deviceready”啟動后調用它。 在未定義之前。 我想這就是帶有超時的解決方案起作用的原因,當我們等待時設備就緒的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM