獲取手機通訊錄
阿新 • • 發佈:2019-01-24
參照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 ]);
//能查詢出撥號人,電話,撥出還是撥入,時間戳,撥號時長。
'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 ]);
//能查詢出撥號人,電話,撥出還是撥入,時間戳,撥號時長。