嗨,我正在使用这个用于 android 的 GCM 通知插件并且工作得几乎完美,我遇到的唯一问题是当用户强制关闭我的应用程序或设备关闭时通知服务停止工作。
我查看了插件代码问题并意识到以下功能导致了问题。
public static void sendJavascript( JSONObject _json )
{
String _d = "javascript:"+gECB+"(" + _json.toString() + ")";
Log.v(ME + ":sendJavascript", _d);
if (gECB != null ) {
gwebView.sendJavascript( _d );
}
}
当设备关闭再打开或应用程序被强制关闭时,gwebView 引用会丢失。如果我尝试使用 gwebView.sendJavascript( _d ) 方法,我会得到一个空指针异常。
查看插件代码,我注意到在注册设备时引用了 gwebView,正如以下代码所示:
public static Plugin gwebView;
private static String gECB;
private static String gSenderID;
@SuppressWarnings("deprecation")
@Override
public PluginResult execute(String action, JSONArray data, String callbackId)
{
PluginResult result = null;
Log.v(ME + ":execute", "action=" + action);
if (REGISTER.equals(action)) {
Log.v(ME + ":execute", "data=" + data.toString());
try {
JSONObject jo= new JSONObject(data.toString().substring(1, data.toString().length()-1));
gwebView = this;
..............................More code here......................
通知是在后台收到的,但我不能调用任何 javascript 方法,因为 gwebView 什么都没有。
我的方法是每当 gwebView 有一个空指针时在状态栏上显示一个通用通知,但我只是不知道如何获取应用程序或 cordova 上下文以使用此功能。
任何帮助将不胜感激,谢谢