我一直在尋找答案,並且Google-sphere沒有提供任何答案。我已經嘗試了一切,我知道該怎麼做,並通過建議的解決方案和答案,沒有任何工作。Phonegap網絡連接 - 無法讀取未定義的屬性'type'
概括地說,我試圖建立一個Phonegap
應用爲Android
和Apple
移動設備和我需要的是同時檢測網絡狀態和網絡連接類型的功能之一。以下是我正在使用的代碼。
Firing device ready
警報啓動,然後出現錯誤Cannot read property 'type' of undefined
,然後循環顯示Navigator
對象。在瀏覽對象的這些屬性時,我看不到舊版本中使用的connection
屬性或甚至network
屬性。
任何人有任何想法?
的index.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- jQuery Core -->
<script src="js/jquery-1.11.1.min.js"></script>
<!-- The main engine for the software. -->
<script src="js/main.js"></script>
<!-- Third party plugins -->
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="barcodescanner.js"></script>
<script type="text/javascript" src="childbrowser.js"></script>
<script type="text/javascript" src="js/barcode.js"></script>
<title>index</title>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
</script>
</head>
<body>
<script>
barcode_app.initialize();
</script>
</body>
</html>
main.js
function onDeviceReady(){
alert('Firing device ready');
try{
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.NONE] = 'No network connection';
$("#system_popup").html('Connection type: ' + states[networkState]);
$("#system_popup").popup("open")
//alert('Connection type: ' + states[networkState]);
}catch(e){
alert(e);
$.each(navigator, function(key, value){
alert(key+' => '+value);
});
}
}
而在我的config.xml中我有:
<plugin
name="NetworkStatus"
value="org.apache.cordova.NetworkManager" />
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.ACCESS_NETWORK_STATE" />
</gap:config-file>
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.INTERNET" />
</gap:config-file>
<gap:config-file platform="android" parent="/manifest">
<uses-permission name="android.permission.READ_PHONE_STATE" />
</gap:config-file>
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager" />
<param name="ios-package" value="CDVConnection" />
</feature>
UPDATE:解決方案
解決辦法,可以@Dawson勞登和@benka的共同努力終於制定。道森糾正我用這本來應該是插件:
<gap:plugin
name="org.apache.cordova.network-information"
version="0.2.7" />
這真的只有落實@benka提到的短暫延遲之後正常工作。所以,現在的工作代碼看起來像這樣在JavaScript:
function onDeviceReady(){
try{
var networkState = navigator.connection && navigator.connection.type;
setTimeout(function(){
networkState = navigator.connection && 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.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}, 500);
}catch(e){
alert(e);
$.each(navigator, function(key, value){
alert(key+' => '+value);
});
}
}
你在本地或build.phonegap.com建設? – 2014-09-04 19:13:55
build.phonegap.com – 2014-09-04 19:14:24
你想使用這裏找到的插件:https://build.phonegap.com/plugins/626' ' –
2014-09-04 19:15:25