2011-08-31 46 views
6

有沒有什麼辦法以編程方式解除navigator.notification.alert()?當有位置服務錯誤時我會發出警報,但如果清除,我寧願將其解除,而不要求用戶手動執行。如何以編程方式解除電話通知

任何想法或解決方案?

謝謝!

回答

1

您無法以編程方式關閉對話框alert()

但是,您可以做的不是使用alert()實現您自己的定製覆蓋圖,該覆蓋圖的外觀/行爲與警報類似,然後您可以隨時輕鬆駁回該覆蓋。一些額外的討論是在這裏:

Javascript close alert box

編輯

我做了bit more investigation到這一點,我不再相信PhoneGap的alert()對話實際上是一樣的本地JavaScript對話框。他們正在使用一些聰明的技巧回撥爲本地代碼(在Android和iOS上)以顯示警報。

因此,它可能可以通過編程方式將對話框關閉,但幾乎肯定不會從您的JavaScript代碼中直接進行。您需要使用一些類似的技巧從您的JavaScript回調到本地代碼,然後找到並關閉Phonegap警報視圖。第一部分可能相當困難。第二部分是微不足道的:

Hide UIAlertView programmatically?

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

嘿,我已經獲得國家在Java中文件的變化。 的src /安卓/ Notification.java

增加了一個參考dlg.create()

首先聲明這個..

private AlertDialog alertbox; 

然後添加你來自哪裏的JavaScript

發出 「駁回」 的情況下,要添加
else if (action.equals("dismiss")) { 
    this.dismissAll(); 
} 

方法:

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

請記住在通知中添加相同的內容。在通知WWW文件夾的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,""); 

這將關閉所有的警報/確認/提示開去。

相關問題