【发布时间】:2016-02-08 19:39:35
【问题描述】:
我想使用 Cordova 访问最近的通话记录,但没有官方插件,有人为此制作了一个自定义插件 https://github.com/dalyc/Cordova-CallLog-Plugin 是我唯一的希望,但问题是这个插件不再支持它的创建者,它在他的示例中使用了 AngularJS。我做了我的搜索工作,发现人们试图使用这个插件来使用 javascript,但他们没有得到有效的解决方案。正如作者在这里提到的https://github.com/dalyc/Cordova-CallLog-Plugin/issues/4,有 3 个函数可以与 javascript 一起使用。
window.plugins.calllog.list : get recent calls - takes a day limit e.g 7 is go back a week
window.plugins.calllog.show : show contact for specified phone number
window.plugins.calllog.contact : get contact details for specified phone number
我尝试了其中的每一个,显然 window.plugins.calllog.show 工作正常,它显示了特定号码的联系方式。但是 window.plugins.calllog.list 对我不起作用,它返回“未定义”。请需要帮助。提前致谢。
我的 index.html 包含
<button id="call_log" onclick="loadLogs();">call log</button>
我的 app.js 包含
//calllog
function loadLogs() {
if(window.plugins.calllog == "undefined"){
alert("Doesn't works");
}
else
{
alert("works");
window.plugins.calllog.show('12345');
//this code is working and opening list of contacts having these "12345" in their phonenumber
var list = window.plugins.calllog.list('7');
alert(list[0]);
}
}
未捕获的类型错误:无法读取未定义的属性“0”
【问题讨论】:
-
把你的代码粘贴到这里,让我们看看有什么问题
-
您是否在控制器中注入
CallLogService?在 Github 插件页面中查看示例,您应该这样做:CallLogService.list(1).then( function(callLog) { console.log(callLog); $scope.data.lastCall = callLog[0]; }, function(error) { console.error(error); }); -
window.plugins.calllog.list(days, function (response) { // Do something with response; }, function (error) { // Damn got an error. useful print it });如您所见,您应该在成功的情况下传递一个函数,在错误的情况下传递一个函数。或者您可以使用 CallLogService,将其注入您的控制器 -
这项工作非常感谢。我已经浪费了超过 24 小时的工作解决方案,现在你救了我的命。
标签: javascript android angularjs cordova cordova-plugins