2016-12-11 82 views
0

我尝试选择与科尔多瓦插件联系人的联系人,但我仍然有一个错误。我的按钮#pickContact可以正确打开我可以点按联系人的活动。但是当我点击一个时,没有任何反应。当我回到我的页面时,出现错误消息OPERATION_CANCELLED_ERROR(代码6)。科尔多瓦pickcontact不起作用

我真的不明白问题在哪里。我在Android Marshmallow上运行我的应用程序。我想过一个权限问题,但我的应用程序能够正确地找到navigator.contacts.find接触,但不与navigator.contacts.pickContact

这里是我的代码:

function pickContact() { 
 
    navigator.contacts.pickContact(function(contact){ 
 
     alert('ok !'); 
 
    },function(err){ 
 
     alert('bug !' + err); 
 
     console.log('Error: ' + err); 
 
    }); 
 
} 
 

 
var app = { 
 
    // Application Constructor 
 
    initialize: function() { 
 
     this.onDeviceReady(); 
 
     if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) { 
 
      document.addEventListener("deviceready", this.onDeviceReady, false); 
 
     } else { 
 
      this.onDeviceReady(); 
 
     } 
 
    }, 
 

 
    onDeviceReady: function() { 
 
     $("#pickContact").click(pickContact); 
 
    }, 
 

 
    // Update DOM on a Received Event 
 
    receivedEvent: function(id) { 
 

 
    } 
 
}; 
 

 
app.initialize();
感谢您的帮助!

回答

0

为每contacts plugin的参考文档您选定的联系人将设置成JSON.stringify(contact)可以alert它,看看选择哪些触点(我已经使用这个插件,但我不需要这个功能挑选任何单一的接触,从而不能确定如果有任何完成按钮或没有),然后按完成或确定按钮,这将重定向到另一个功能,您可以获得该联系人或满足您的下一个要求。

function pickContact() { 
    navigator.contacts.pickContact(function(contact){ 
     alert(JSON.stringify(contact)); 
     //This is added by me, on done button click or single selection 
     setContacts(contact); 
    },function(err){ 
     alert('bug !' + err); 
     console.log('Error: ' + err); 
    }); 
} 
//This is added by me 
function setContacts(ct) 
{ 
    alert(JSON.stringify(ct)); 
    $("#contactlist").append(ct); 

    //or 

    var getData = JSON.parse(ct); 
    if(getData.length > 1) 
    { 
     for(i=0;i<getData.length;i++) 
     { 
      $("#contactlist").append(getData[i]); 
     } 
    } 
} 

让我知道我是错的还是正确的。

0

非常感谢您的回答。不幸的是,你的代码不适合我,但我发现该怎么办:

pickcontact打开您的本机应用程序“联系人”,您的cordova应用程序在后台删除。在Android上,这意味着你失去了你的应用程序的状态,所以你有一个错误。为了解决这个问题,你需要在你的js文件中添加的onResume事件,像这样:

var app = { 
 
    // Application Constructor 
 
    initialize: function() { 
 
     this.onDeviceReady(); 
 
     if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) { 
 
      document.addEventListener("deviceready", this.onDeviceReady, false); 
 
     } else { 
 
      this.onDeviceReady(); 
 
     } 
 
    }, 
 

 
    onDeviceReady: function() { 
 
     $("#pickContact").click(pickContact); 
 
    }, 
 

 
    onResume: function(resumeEvent) { 
 
     //alert('onResume'); 
 
    }, 
 

 
    // Update DOM on a Received Event 
 
    receivedEvent: function(id) { 
 

 
    } 
 
}; 
 

 
app.initialize();

之后,您就可以使用这个功能找回您挑选联系人:

function pickContact() { 
 
    navigator.contacts.pickContact(function(contact){ 
 
     $("#divTest").append('<p>The following contact has been selected:' + JSON.stringify(contact)); 
 
    },function(err){ 
 
     alert('bug !' + err); 
 
     console.log('Error: ' + err); 
 
    }); 
 
}

因此,就像每次编程时一样,当你知道答案时,这很容易。但是当你不知道的时候,你会失去几小时和几小时......

我希望能帮助别人。