为了介绍我目前的项目 - 我正在为员工开设一个电话簿应用程序,其中有一个按钮可以在用户的设备上创建新的联系人。我正在使用以下插件在我的Ionic应用程序中处理它:
http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-contacts/
尝试按照文档说明的方式访问插件时:
navigator.contacts
我还试图通过
访问window.navigator.contacts
它返回一个未定义的错误。在文档中,它声明只有在触发deviceready事件后才能访问它 - 所以我的代码如下:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log("Testing Navigation Contacts");
console.log(navigator.contacts);
}
我还尝试使用$ ionicPlatform.ready功能,如下所示:
$ionicPlatform.ready(function() {
var myContact = window.navigator.contacts.create({"displayName": "Test User"});
myContact.save();
});
下面列出了确切的错误消息:
Error: undefined is not an object (evaluating 'navigator.contacts.create')
任何帮助都会非常感激,伙计们。我不知道还有什么可尝试的。谢谢你的阅读!
麦克
答案 0 :(得分:0)
我已经尝试了插件,它按预期工作。在Android Marshamallow上运行的设备中进行了相同的测试。
提出了一个示例cordova应用程序,该应用程序使用此联系人插件向设备添加联系人。您可以在我的github page
中查看示例由于您在使用插件时遇到了困难,我还在示例中添加了插件文件夹。你可以复制项目,添加android平台,构建和测试相同。希望它有所帮助
答案 1 :(得分:0)
使用此插件时遇到了同样的问题。我认为这是版本问题,但文档尚未更新。
这就是我的进展:
首先在app.module.ts文件中导入联系人
import { Contacts } from '@ionic-native/contacts';
...
...
providers: [
...
Contacts,
...
]
然后导入您要在文件中使用的类
import { Contacts, Contact , ContactField, ContactName } from '@ionic-native/contacts';
...
constructor(private contacts: Contacts) {}
现在您可以使用对象
createContact(name, number){
let contact: Contact = this.contacts.create();
contact.name = new ContactName(null, '', name);
contact.phoneNumbers = [new ContactField('mobile', number,true),new ContactField('home', number+1,true)];
contact.save().then(
() => alert('Contact saved!'+ JSON.stringify(contact)),
(error: any) => alert('Error saving contact.'+error)
);
}
在这里,我创建了一个包含2个电话号码的联系人。当然你可以使用其他函数find()和pickContact()。