我在我的Android应用程序的Notification提供程序中使用WebView,它使用JavaScriptInterface从远程Javascript文件获取信息,根据收到的服务器信息,它触发我的应用程序发送抬头通知。
所以,我已经在onCreate void:
中添加了一个JavaScript接口OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");
并创建了WebAppInterface类
// Interfacing with Javascript Code
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showTempHumUnavailableNotification(String toast) {
OnomeTempHumUnavailableNotification();
}
@JavascriptInterface
public void showSecurDudeAlertNotification(String toast) {
OnomeSecurDudeAlertNotification();
}
}
当某个文件在远程服务器上不可用时,JavaScript文件会触发通知。
function showDHT11Alert() {
$.ajax({
url: 'http://serveraddress/OnomeWeb/resources/data/tmp/onomeDHT11On',
success: function () {
$('#onomenotif_DHT11Unavailable').hide();
},
error: function () {
$('#onomenotif_DHT11Unavailable').show();
showDHT11Toast();
},
});
}
function showDHT11Toast(toast) {
Android.showTempHumUnavailableNotification(toast);
}
即使应用程序处于后台,通知提供程序仍然可以正常工作,但很明显,如果我从最近的应用程序屏幕关闭应用程序,通知提供程序将停止工作。现在,即使应用程序已从最近的应用程序中关闭,我也希望将此JavaScript界面设置为后台服务。
后台服务应该是我问题的最佳解决方案,但是如何将其与主WebView进行交互?这可能吗?
答案 0 :(得分:0)
后台服务应该是我问题的最佳解决方案,但是 如何将其与主WebView连接?这可能吗?
不幸的是,这是不可能的。 JavaScriptInterface由您的应用程序通过调用
注入 OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");
它仅适用于您的WebView。其他WebViews不会注入它,因此无法触发您的showTempHumUnavailableNotification