簡體   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