2011-08-31 18 views
6

¿Hay alguna manera de cerrar programáticamente navigator.notification.alert()? Invoco cuando hay un error de los servicios de ubicación, pero si se borra, prefiero descartarlo en lugar de solicitar al usuario que lo haga de forma manual.Cómo descartar una notificación de phonega programmatically

¿Alguna idea o solución?

Gracias!

Respuesta

1

No se puede rechazar mediante programación un cuadro de diálogo alert(), no.

Lo que podría hacer es, sin embargo, en lugar de utilizar alert() implementar su propia superposición personalizada que se ve/actúa de forma similar a una alerta, y luego puede descartarla fácilmente cuando lo desee. Algunos discusión adicional está aquí:

Javascript close alert box

Editar

hice un bit more investigation en esto y ya no creo que el diálogo Phonegap alert() en realidad es el mismo que el diálogo de JavaScript nativo. Están utilizando algunos trucos ingeniosos para volver a llamar al código nativo (tanto en Android como en iOS) para mostrar la alerta.

Como tal, es puede ser posible descartar el diálogo programáticamente, pero casi seguro que no directamente desde su código JavaScript. Tendría que usar algún truco similar para devolver la llamada desde su JavaScript al código nativo, y luego localizar y cerrar la vista de alerta de Phonegap. La primera parte puede ser bastante difícil. La segunda parte es trivial:

Hide UIAlertView programmatically?

0

Tal vez crear un diálogo de un div o algún otro elemento y mostrar que al usuario para que pueda descartar fácilmente.

JavaScript

function geo_error() { 
    //only append error message if none exists 
    if ($('#page_container').find('.geo_error').length == 0) { 
     $('#page_container').append('<div class="geo_error">A Geolocation Error Has Occured</div>'); 
    } 
} 
function get_success(position) { 
    //hide the error message on success 
    $('#page_container').find('.geo_error').hide(); 
} 

CSS

.geo_error { 
    position: absolute; 
    top: 10px; 
    bottom: 10px; 
    left: 20px; 
    right: 20px; 
    z-index: 1000; 
} 
2

Hey i tienen un cambio en el archivo de java para esto. src/android/Notification.java

añadido una referencia a dlg.create()

Primero Declarar esto ..

private AlertDialog alertbox; 

continuación, agregue un caso en el que se envía "despedir" de Javascript

else if (action.equals("dismiss")) { 
    this.dismissAll(); 
} 

Método que se añaden:

public void dismissAll(){ 
    alertbox.dismiss(); 
} 

Recuerde agregar lo mismo en la notificación.js en la carpeta www de la notificación de plugin

dismiss: function(message, completeCallback, title, buttonLabel) { 
    var _title = (title || "Alert");//Doesnt Matter! 
    var _buttonLabel = (buttonLabel || "OK");//Doesnt Matter! 
    exec(completeCallback, null, "Notification", "dismiss", [message, _title, _buttonLabel]); 
}, 

Ahora Añadir

alertbox = dlg.create(); 
alertbox.show(); 

en lugar de

dlg.create(); 
dlg.show(); 

en todos los lugares.

y que son buenos para ir llamando

navigator.notification.dismiss("",null,""); 

Este desestimará toda la pronta alerta/Confirmar/abierto.

Cuestiones relacionadas