2014-11-26 2 views
0

Я разрабатываю приложение для Android с помощью Phonegap. Мне нужно проверить, является ли интернет-соединение «истинным». Если значение false, покажите предупреждение, иначе «перенаправить» на веб-сайт. Но не работает, кажется, что приложение просто игнорирует этот «скрипт».Проверить подключение к Интернету не работает

код:

<head> 
<script> 
var state = navigator.connection.type; 
if (state == window.Connection.NONE) 
{ 
    alert("nao"); 
} 
else 
{ 
    <meta http-equiv="refresh" content="0; url=http://website.com.br/abc" /> 
} 
</script> 
+0

вы имели в виду [ 'window.navigator.onLine'] (https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine) – adeneo

+0

Я веб-разработчик , но у меня есть предложение, которое может сработать. Попробуйте выполнить ajax-запрос с jquery и используйте атрибут timeout.Если запрос истекает, то вероятность того, что у пользователя нет соединения. Опять может быть лучший способ. Удачи :-) – www139

+0

В моем состоянии var? @adeneo –

ответ

1

Я использую эту функцию в моей Android/Phonegap Применение:

function CheckConnection() { 
     if(!navigator.network) { 
      navigator.network = window.top.navigator.network; 
     } 
     // return the type of connection found 
     return ((navigator.network.connection.type === "none" || navigator.network.connection.type === null || navigator.network.connection.type === "unknown") ? false : true); 
    } 
+0

Благодарим вас за ответ, но как назвать эту функцию? Извините, я новичок с javascript. –

+1

Назовите его так: 'CheckConnection();'. Вы также можете называть его нажатием кнопки или интервалом (вызывать функцию каждые секунды). Раньше мне никогда не приходилось сталкиваться с подобной ситуацией. Если ответ выше, я думаю, что это ваш лучший выбор. Он (я считаю, был бы самым надежным ответом, если он работает [который я не знаю, потому что я не знаком с этим кодом]) – www139

+0

спасибо за ваш комментарий @ www139 – Jorgesys

1

Я хочу отметить, что это может быть не самым надежным. Также вы не хотите путать медленное соединение без соединения, поэтому атрибут тайм-аута должен быть установлен в течение длительного периода времени для медленных соединений. Я также использую jquery для запроса ajax, потому что javascript будет много кода, поэтому убедитесь, что у вас есть библиотека jquery. Сначала создайте файл PHP, чтобы сделать запрос на (я буду называть его test.php):

<?php 
//test.php 
echo 'request success'; 
?> 

Инициатор для запроса (проверяет подключение к интернету):

Javascript/Jquery:

<script type="text/javascript"> 
$.ajax({ 
    url: "test.php", 
    error: function(){ 
     // will fire when timeout is reached 
     alert('no internet'); 
    }, 
    success: function(){ 
     //do something 
     //success function do this if the request is a success 
    }, 
    timeout: 30000 // sets timeout to 30 seconds remember you want it to be long to ensure that it isn't just a slow connection 
}); 
</script> 

Надеюсь, что это поможет, и снова это может быть не самый лучший способ. Я думаю, что у java может быть метод/класс, чтобы узнать об Интернете. Я также думаю, что вы используете java, так как это приложение для Android - правильно? Скажи мне, если это не сработает для тебя.

1

Если вы работаете в Cordova версии> = 3.0.0, то сначала вам нужно установить плагин Network Connection с помощью CLI (интерфейса командной строки), каких событий добавленного org.apache.cordova .network-информация

  1. онлайн
  2. форума

Cordova плагин добавить org.apache.cordova.network-информацию

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

function onOffline() { 
    // YOUR CODE FOR OFFLINE 
} 

function onOnline() { 
    // YOUR CODE FOR ONLINE 
} 
1

я вижу, вы используете experimental API, и именно поэтому ее не работает.

Как вы развиваете на PhoneGap, вы должны добавить соответствующий плагин для получения информации о сети.

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

проверка подробности и примеры этого плагина here.

после добавления плагина, чтобы проверить подключение к сети.

var state = navigator.network.connection.type; 
     if (state == navigator.network.connection.type) 
     { 
      alert("nao"); 
     } 
     else 
     { 
      <meta http-equiv="refresh" content="0; url=http://website.com.br/abc" /> 
     } 
Смежные вопросы