addEventListener用于在B2G中使用mozMobileMessage接收SMS

时间:2013-08-20 17:29:34

标签: angularjs firefox-os

我一直在教自己如何在AngularJS for Firefox OS中为大学作业编写应用程序。这是我在JS编写应用程序的第一次尝试。

该应用程序的目的是根据通过短信发送的“命令”运行命令(又称“响铃”,“锁定设备”,“打开wifi”,并回复带有GPS位置的SMS命令)。目前,我只是想做一个简单的$window.alert('Messaged Received'),以便在收到短信时显示。

我的问题是,我正在尝试为收到的短信创建addEventListener,目前显示$window.alert()。稍后,我将使用一个案例开关。

我已经提到了MDN API来创建事件监听器。

var mozMM = navigator.mozMobileMessage;
mozMM.addEventListener('received', function addEventListener(evt) {
    // Display a alert when a message is received
    $window.alert('SMS received');
    $window.alert(evt.message.body);
}, false);

我的manifest.webapp已设置为包含所有相关设置:

"type" : "certified",
"permissions": {
    "backgroundservice":{},
    "sms":{},
    ...
},
"messages": [
    { "sms-received": "/index.html" },
    { "notification": "/index.html" }
]

我可以从我的应用程序发送短信,没有任何问题。所以我假设我的权限没有问题。我还确认我可以完全访问mozMobileMessage对象。

为了进行测试,我使用的是Geekphone,它已经植根,可以安装经过认证的应用程序。

我已将源代码上传到github: https://github.com/s3069246/findmydevice/tree/master/app

1 个答案:

答案 0 :(得分:1)

感谢Google网上论坛上有人为我提供了正确的解决方案。我想我也会在这里分享。

问题是我使用了错误的事件处理程序。我本应该使用系统消息处理程序

navigator.mozSetMessageHandler('sms-received', function onSMS(sms) { 
    /* here your code */ 
}); 

与清单中的"message": []处理程序结合使用,系统处理程序将提醒应用程序已收到消息,即使应用程序在后台运行也是如此。