2015-12-19 4 views
0

Я новичок в телефонном разрыве и создаю приложение для Android с интерфейсом командной строки (CLI), но когда функция загружается, чтобы предупредить меня, если телефон находится в сети или отключен, он не работает. Ниже приведены коды и сведения о том, как я установил модули.PhoneGap Online и автономный режим

Моя проблема - последнее предупреждение, которое я получаю, это «OK58», тогда телефон просто продолжает загружать и загружать.

Java-код

функция onDeviceReady() {

"use strict"; 
alert("ok55"); 
document.addEventListener("online", onOnline, false); 
document.addEventListener("offline", onOffline, false); 

alert("ok58"); 


//try{ 
    var networkState = navigator.connection && navigator.connection.type; 

// SetTimeout (функция() { 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); 
// }); 
// } 

alert("hello"); 

Мой заголовок html. Приведенный выше код содержится в common.js

<head> 
    <meta charset="utf-8" /> 
    <meta name="format-detection" content="telephone=no" /> 
    <meta name="msapplication-tap-highlight" content="no" /> 
    <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline'; media-src *"> 
    <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 --> 
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <title>Eurotech</title> 
    <link rel="stylesheet" href="css/style_signiture.css"/> 
    <link rel="stylesheet" href="css/jquery.mobile-1.1.0.min.css"/> 
    <script src="cordova.js" type="text/javascript"></script> 
    <script src="js/phonegap-nfc-0.3.0.js"></script> 
    <script src="js/nfc.js"></script> 
    <script src="js/common.js"></script>  
    <script src="js/jquery-1.7.1.min.js"></script> 
    <script src="js/jquery.ajaxmanager.js"></script> 
    <script src="js/jqm.page.params.js"></script> 
    <script src="js/jquery.mobile-1.1.0.min.js"></script> 
    <script src="js/task.js"></script> 

    <script src="js/modernizr.custom.34982.js"></script> 
    <script src="js/application.js"></script> 
    <script src="js/signatureCapture.js"></script> 
    <script type="text/javascript" src="cordova.js"></script> 
    <script type="text/javascript" src="js/index.js"></script> 
</head> 

В моем файле config.xml У меня есть ниже содержание включены

<plugin name="cordova-plugin-whitelist" version="1" /> 
<plugin name="org.apache.cordova.network-information" spec="0.2.15" source="pgb" /> 
<plugin name="NfcPlugin" value="com.chariotsolutions.nfc.plugin.NfcPlugin"/> 

И

<gap:plugin name="cordova-plugin-dialogs" source="npm" /> 
<gap:plugin name="org.apache.cordova.network-information" version="0.2.15" /> 

Я установил плагин с помощью командной строки, используя

phonegap plugin add org.apache.cordova.dialogs 
phonegap plugin add cordova-plugin-network-information 

I думаю, что все. Как я могу отладить это лучше? Какие-нибудь идеи в чем-то не так?

ответ

2

У вас есть некоторые опечатки в вашем коде, это должно работать (непроверенные):

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'; 

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

запрос Все устройства управляются событиями. Поэтому бессмысленно ставить их в тайм-аут.

Просьба ознакомиться с документами по адресу https://www.npmjs.com/package/cordova-plugin-network-information.

Для отладки установите https://www.npmjs.com/package/cordova-plugin-console, после чего вы сможете просматривать выходные данные в SDK и/или в информации разработчика вашего браузера. Используйте Safari для iOS и Chrome для Android.

Если у вас есть старый Android вы можете также использовать weinre для отладки: https://people.apache.org/~pmuellr/weinre-docs/latest/

Update:

Здесь вы рабочий пример, протестирован на IPad 9.2.

var app = { 
    initialize: function() { 

     document.addEventListener("deviceready", app.onDeviceReady, false); 
     document.addEventListener("online", app.onOnline, false); 
     document.addEventListener("offline", app.onOffline, false); 

    }, onDeviceReady: function() { 

     alert("App is started"); 

     app.getNetworkState(); 

    }, getNetworkState: function() { 

     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"; 

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

    }, onOnline: function(){ 

     alert("Device is online"); 

     app.getNetworkState(); 

    }, onOffline: function(){ 

     alert("Device is offline"); 

    } 
}; 

app.initialize(); 

Если это не работает, значит, у вас возникли проблемы с установкой вашей кордовой/плагиновой установки. Удачи. ;-))

+0

Ваши изменения заставили экран перестать белым, но я никогда не получаю, но я все равно получаю загрузку страницы. Я собираюсь попробовать ваши советы по отладке. Спасибо –

+0

У вас есть два прослушивателя событий в вашем коде: онлайн и офлайн. Являются ли функции onOnline и onOffline в вашем коде? В противном случае вы получите сообщение об ошибке. И вы должны поместить прослушиватель событий за пределы события готовности устройства. – Joerg

+0

var networkState = navigator.connection.type; он не пройдет мимо этого момента. Я предполагаю, что плагин настроен неправильно? –

Смежные вопросы