繁体   English   中英

通知后台服务

[英]Background Service for notifications

我在一个Android应用程序的Notification提供程序中使用WebView,该WebView使用JavaScriptInterface从远程Javascript文件中获取信息,该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交互? 这可能吗?

后台服务应该是我的问题的最佳解决方案,但是如何将其与主WebView交互? 这可能吗?

不幸的是,这是不可能的。 JavaScriptInterface是由您的应用通过调用而注入的

OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");

并且它仅适用于您的WebView。 其他WebView将不会注入它,因此将无法触发您的showTempHumUnavailableNotification

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM