2016-12-11 120 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); 
 
    }); 
 
}

因此,就像每次編程時一樣,當你知道答案時,這很容易。但是當你不知道的時候,你會失去幾小時和幾小時......

我希望能幫助別人。