1. 程式人生 > >獲取手機通訊錄

獲取手機通訊錄

參照http://docs.wex5.com/cordova-plugin-device/呼叫獲取device屬性時提示
'device' is not  defined,哪裡還需要設定或者匯入麼?


測試程式碼如下:
define(function(require){
        var $ = require("jquery");
        var justep = require("$UI/system/lib/justep");
        require("$UI/system/lib/cordova/cordova");
        require("cordova!cordova-plugin-device");


        var Model = function(){
                this.callParent();
        };


        Model.prototype.button1Click = function(event){
                alert( device.platform + " " + device.cordova);
        };


        return Model;
});
//查詢聯絡人
要在Contacts資料庫上進行搜尋,可使用contacts.find()方法,如下所示:
navigator.contacts.find(contactFields, onSuccess, onError, options);


這個例子顯示瞭如下內容:


第1個引數用來給方法傳遞一組聯絡人欄位。這些欄位也將被返回。例如,如果想要的是人名、電子郵件地址和電話號碼,就應該在這裡指明。如果只是想要聯絡人的id,可以給這個引數傳遞一個空值。如果想要返回所有欄位,可以傳遞進["*"]。


第2個引數是success回撥函式,它將接收一個正確的Contact物件,來儲存要查詢的聯絡人資訊。


第3個引數是error回撥函式,它將包含丟擲的任何錯誤。


第4個引數是一組可以傳遞給find方法的選項。其中一個最常使用的是filter選項,它是一個可以對Contacts資料庫進行過濾查詢的字串。


以下是查詢通訊錄的一個示例:
function onSuccess(contacts) {
document.write(contacts.length + ' contacts found.');
for (var i=0; i<contacts.length; i++) {
       for (var j=0; j<contacts[i].emails.length; j++) {
             document.write("Email = " + contacts[i].emails[j].email);
         }
}
}


function onError(contactError) {
     alert('Ooops!');
}


// 查詢電子郵件地址中帶有gmail的所有聯絡人
var myOptions = new ContactFindOptions();
myOptions.filter="gmail";
var myFields = ["emails"];
navigator.contacts.find(myFields, onSuccess, onError, myOptions);


 contacts物件提供對裝置通訊錄資料庫的訪問。
方法:
contacts.create
contacts.find


引數:
contactFields
contactSuccess
contactError
contactFindOptions


物件:
Contact
ContactName
ContactField
ContactAddress
ContactOrganization
ContactFindOptions
ContactError


例2:
查詢:
var options = new ContactFindOptions();
               options.filter = "童星強";//查詢的通訊錄人名字
               options.multiple = false;
            
               fields = ["displayName"];
               navigator.contacts.find(fields, contactfindSuccess, contactfindError, options);
               
               function contactfindSuccess(contacts) {
                  for (var i = 0; i < contacts.length; i++) {
                     alert("Display Name = " + JSON.stringify(contacts[i]));
                  }
               }
                  
               function contactfindError(message) {
                  alert('Failed because: ' + message);
               }
  
  id:全域性唯一識別符號。(DOMString型別)
displayname:聯絡人顯示名稱,適合向終端使用者展示的聯絡人名稱。(DOMString型別)
name:聯絡人姓名所有部分的物件。(CantactName型別)
nickname:暱稱,對聯絡人的非正式稱呼。(DOMString型別)
phoneNumbers:聯絡人所有聯絡電話的陣列。(ContactField[]型別)
emails:聯絡人所有email地址的陣列。(ContactField[]型別)
addrsses:聯絡人所有聯絡地址的陣列。(ContactAddresses[]型別)
ims:聯絡人所有IM地址的陣列。(ContactField[]型別)
organizations:聯絡人所屬所有組織的陣列。(ContactOrganization[]型別)
birthday:聯絡人的生日。(日期型別)
note:聯絡人的註釋資訊。(DOMString型別)
photos:聯絡人所有照片的陣列.(ContactField[]型別)
categories:聯絡人所屬的所有使用者自定義類別的陣列。(ContactField[]型別)
urls:與聯絡人相關網頁的陣列。(ContactField[]型別)
Model.prototype.modelLoad = function(event){                
                        alert("aaa")
             document.addEventListener("deviceready", onDeviceReady, false);        
             function onDeviceReady() {         
                 var options = new ContactFindOptions();
                 options.filter = "";
                 options.multiple=true;
                 var fields = ["displayName","phoneNumbers"];
                 navigator.contacts.find(fields, onSuccess, onError,options);
             }       
             function onSuccess(contacts) {
                 for (var i = 0; i < contacts.length; i++) {
                    alert("Display Name = " + JSON.stringify(contacts[i]));
                    alert("displayName = " + contacts[i].displayName);
                    var phoneNumbers = contacts[i].phoneNumbers;
                    for(var j = 0;j<phoneNumbers.length;j++)
                     alert("phoneNumbers= " + phoneNumbers[j].value);
                 }
             }
             function onError(contactError) {
                 alert('onError!');
             }
         };
define(function(require){
var $ = require("jquery");
var justep = require("$UI/system/lib/justep");
require("cordova!cordova-plugin-device");
require("cordova!cordova-plugin-contacts");
require("$UI/system/lib/cordova/cordova");
//cordova執行環境,多個頁面用cordova外掛,每個頁面都需要require進來




var Model = function(){
this.callParent();
};


Model.prototype.button1Click = function(event){
//獲取手機資訊
//document.getElementById("cordovaSpan").innerHTML = device.cordova;
//document.getElementById("platform").innerHTML = device.platform;
//document.getElementById("version").innerHTML = device.version;
//document.getElementById("uuid").innerHTML = device.uuid;
//document.getElementById("model").innerHTML = device.model;
//document.getElementById("manufacturer").innerHTML = device.manufacturer;
alert( device.platform + " " + device.cordova+" "+device.cordova+" "+device.version+" "+device.uuid+" "+device.model+" "+device.manufacturer);
alert("uuid是:"+device.uuid);
};
Model.prototype.button2Click = function(event){
//獲取聯絡人
//alert("aaa")
//document.addEventListener("deviceready", onDeviceReady, false);        
//function onDeviceReady() {         
//var options = new ContactFindOptions();
//options.filter = "";
//options.multiple=true;
//var fields = ["displayName","phoneNumbers"];
//navigator.contacts.find(fields, onSuccess, onError,options);
//}       
//function onSuccess(contacts) {
//for (var i = 0; i < contacts.length; i++) {
//alert("Display Name = " + JSON.stringify(contacts[i]));
//alert("displayName = " + contacts[i].displayName);
//var phoneNumbers = contacts[i].phoneNumbers;
//for(var j = 0;j<phoneNumbers.length;j++)
//alert("phoneNumbers= " + phoneNumbers[j].value);
//}
//}
//function onError(contactError) {
//alert('onError!');
//}
//var options = new ContactFindOptions();
//options.filter = "爸爸";//查詢的通訊錄人名字
//options.multiple = false;


//fields = ["displayName"];
//navigator.contacts.find(fields, contactfindSuccess, contactfindError, options);


//function contactfindSuccess(contacts) {
//for (var i = 0; i < contacts.length; i++) {
//alert("Display Name = " + JSON.stringify(contacts[i]));
//}
//}


//function contactfindError(message) {
//alert('Failed because: ' + message);
//}
function onSuccess(contacts) { 
alert('Found ' + contacts.length + ' contacts.'); 

function onError() { 
alert('onError!'); 

//從所有聯絡人
var options = new ContactFindOptions(); 
options.filter="爸爸"; 
var fields = ["displayName", "name"]; 
navigator.contacts.find(fields, onSuccess, onError, options); 




};
Model.prototype.button3Click = function(event){
//
var options = new ContactFindOptions();
                 options.filter = "";
                 options.multiple=true;
                 var fields = ["displayName","phoneNumbers"];
                   navigator.contacts.find(fields, onSuccess, onError,options);
function onSuccess(contacts) {
                 for (var i = 0; i < contacts.length; i++) {
                    alert("Display Name = " + JSON.stringify(contacts[i]));
                    alert("displayName = " + contacts[i].displayName);
                    var phoneNumbers = contacts[i].phoneNumbers;
                    for(var j = 0;j<phoneNumbers.length;j++)
                     alert("phoneNumbers= " + phoneNumbers[j].value);
                 }
             }
function onError(contactError) {
                 alert('onError!');
             }
};
return Model;
});
require("$UI/system/lib/cordova/cordova");
require("cordova!cordova-plugin-contacts");//匯入cordova


//新增:
var myContact = navigator.contacts.create({"displayName": "Test User"});
               myContact.save(contactSuccess, contactError);
               
               function contactSuccess() {
                  alert("Contact is saved!")
               }
                  
               function contactError(message) {
                  alert('Failed because: ' + message);
               }


查詢:
var options = new ContactFindOptions();
               options.filter = "童星強";//查詢的通訊錄人名字
               options.multiple = false;
            
               fields = ["displayName"];
               navigator.contacts.find(fields, contactfindSuccess, contactfindError, options);
               
               function contactfindSuccess(contacts) {
                  for (var i = 0; i < contacts.length; i++) {
                     alert("Display Name = " + JSON.stringify(contacts[i]));
                  }
               }
                  
               function contactfindError(message) {
                  alert('Failed because: ' + message);
               }
  require("cordova!callsplugin");//匯入cordova


            var firstCall = 0;
            var lastCall = 20000  //這裡的lastcall就是指通話記錄末尾號,你可以通過設定這個,從最近的通話記錄開始讀取指定個數。
            calls.getCalls(function(res) {
                    var list = JSON.parse(res);
                    callList = JSON.stringify(list);
                    // console.log("通話記錄:"+calList);
                          alert(callList);//將所有資料alert出來
            }, function(error) {
                          //console.log(error);
            }, "", "getCallDetails", [ firstCall, lastCall ]);


//能查詢出撥號人,電話,撥出還是撥入,時間戳,撥號時長。