我遇到有关cordova / phonegap联系人的问题 这是我试图执行的代码,我输入了一个外部javascript文件:
function onDeviceReady() {
// find all contacts
var options = new ContactFindOptions();
options.filter = "*";
var fields = ["displayName", "name"];
navigator.contacts.find(fields, onSuccess, onError, options);
}
// onSuccess: Get a snapshot of the current contacts
function onSuccess(contacts) {
for (var i = 0; i < contacts.length; i++) {
console.log("Display Name = " + contacts[i].displayName);
}
}
// onError: Failed to get the contacts
function onError(contactError) {
alert('onError!');
}
这是来自phonegap API文档的代码: link
原始代码是在每个字段中找到所有带有'bob'的联系人 我把所有联系人都改为“*”(只是一个星星)。
只需按一下按钮即可调用onDeviceReady函数。
我在logcat中遇到的错误是:
[INFO:CONSOLE(81)] "Uncaught ReferenceError: ContactFindOptions is not defined"
81 is the linenumber with: var options = new ContactFindOptions();
有谁知道如何使函数ContactFindOptions()起作用?
如果您需要更多信息,请告诉我们。
答案 0 :(得分:1)
可能会发生这种情况,因为您的cordova不理解此功能。 您需要添加插件,您需要添加联系人插件。 在您的cordova项目中使用命令行运行:
cordova plugin add org.apache.cordova.contacts
这将在 AndroidManifest.xml
中添加以下内容<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
并将以下内容添加到 res \ xml \ config.xml
<feature name="Contacts">
<param name="android-package" value="org.apache.cordova.contacts.ContactManager" />
</feature>
答案 1 :(得分:0)
使用Phonegap访问Android上的联系人: -
function onDeviceReady() {
// specify contact search criteria
var options = new ContactFindOptions();
options.filter=""; // empty search string returns all contacts
options.multiple=true; // return multiple results
filter = ["displayName"]; // return contact.displayName field
// find contacts
navigator.contacts.find(filter, onSuccess, onError, options);
}
var names = [];
// onSuccess: Get a snapshot of the current contacts
//
function onSuccess(contacts) {
for (var i=0; i<contacts.length; i++) {
if (contacts[i].displayName) { // many contacts don't have displayName
names.push(contacts[i].displayName);
}
}
alert('contacts loaded');
}
您可以尝试阅读文档和如何使用的实现我提供的一些链接可以帮助您Saving Contacts with PhoneGap Android 和Example of Creating a full contact with PhoneGap
答案 2 :(得分:0)
我遇到了同样的问题,因为科尔多瓦的deviceready
事件尚未发生。通过将任何Cordova API调用包装在deviceready
事件侦听器中来解决此问题:
document.addEventListener("deviceready", function(){
console.log("deviceready fired!"); //do your stuff
});
答案 3 :(得分:0)
有同样的问题,添加了这行代码并且它有效。它链接到科尔多瓦图书馆。
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">
app.initialize();
</script>