如何以编程方式取消PhoneGap通知

6
有没有办法在程序中自动关闭 navigator.notification.alert()?当出现位置服务错误时,我使用警报,但如果它被清除,我宁愿关闭它而不是要求用户手动关闭。
有什么想法或解决方案吗?
谢谢!
3个回答

2

嗨,我在这个文件中的Java文件做了一些更改。src/android/Notification.java

添加了对dlg.create()的引用。

首先声明这个...

private AlertDialog alertbox;

然后添加一个情况,你从JavaScript发送“dismiss”。
else if (action.equals("dismiss")) {
     this.dismissAll();
}

待添加的方法:

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

请记得在通知插件的www文件夹中的notification.js中添加相同的内容。
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]);
},

现在添加。
alertbox = dlg.create();
alertbox.show();

替代

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

在所有位置都可以使用。

只需调用,您就可以开始了。

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

这将关闭所有已打开的警告框、确认框和提示框。

1

你无法以编程方式解除 alert() 对话框。

然而,你可以使用自定义覆盖层代替 alert(),它看起来/行为类似于警报,然后你可以在任何时候轻松解除它。这里有一些额外的讨论:

Javascript close alert box

编辑

我对此进行了更多调查,我不再认为 Phonegap 的 alert() 对话框实际上与本机 JavaScript 对话框相同。他们使用一些巧妙的技巧来回调本机代码(在 Android 和 iOS 上),以显示警报。因此,可能可以通过编程方式解除对话框,但几乎肯定不能直接在 JavaScript 代码中完成。你需要使用一些类似的技巧从 JavaScript 回调到本机代码,然后找到并解除 Phonegap 警报视图。第一部分可能相当困难。第二部分很简单:

如何以编程方式隐藏UIAlertView?


0
可能将一个 div 或其他元素创建为对话框,并将其显示给用户,这样您就可以轻松地将其关闭。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接