2013-11-28 161 views
0

我有一个cordova/phonegap联系人的问题。
这是我试图执行代码,我放在一个外部JavaScript文件:未捕获ReferenceError:ContactFindOptions未定义

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()工作?

如果您需要更多信息,请让我知道。使用PhoneGap的Android上

+0

change cordova libaray – prakash

+0

这是什么意思?我正在使用的科尔多瓦图书馆是最新的 – Wargamer88

回答

0

访问联系人: -

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 AndroidExample of Creating a full contact with PhoneGap

+0

问题是我不想保存联系人或创建它们,只需从用户手机中获取所有联系人。最后列出它们,但首先让这个函数工作并让它们回到控制台。 – Wargamer88

+0

仍然无法正常工作,并返回相同的错误。需要有一个包含ContactFindOptions()的文件,但我找不到那个。 – Wargamer88

+0

您是否正确链接了联系人图书馆?.... –

1

此文档和实施可能会发生,因为你的科尔多瓦不理解这个功能。 您需要添加插件,您需要添加联系人插件。 在您的科尔多瓦的项目来看,这种使用命令行:

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" /> 

,并添加以下内容资源\ XML \ config.xml中

<feature name="Contacts"> 
    <param name="android-package" value="org.apache.cordova.contacts.ContactManager" /> 
</feature> 
0

我遇到同样的问题,因为科尔多瓦事件尚未开火。通过包装在deviceready事件侦听器的任何科尔多瓦API调用编辑部地址是:

document.addEventListener("deviceready", function(){ 
    console.log("deviceready fired!"); //do your stuff 
}); 
0

有同样的问题,加入这行代码,它的工作。它链接到科尔多瓦图书馆。

<script type="text/javascript" src="cordova.js"></script> 
<script type="text/javascript"> 
    app.initialize(); 
</script>