尝试使用Phonegap / Cordova 3.5.0-0.2.4从Android手机列出联系人,将“联系人”插件安装到应用程序文件夹。
在下面的步骤序列中运行后,我们只显示一个默认的cordova索引页面 设备上显示消息“正在连接设备”
它不显示存储在手机上的联系人。
请帮助我们。谢谢。
Step1
$ cordova create conto com.example.conto
Step2
$ cordova platform add android
Step3
$ cordova plugin add org.apache.cordova.contacts
Step4
$ cordova plugin list (enter)
org.apache.cordova.contacts 0.2.11 "Contacts"
Step5
Added the following in "app/www/js/index.js"
function read_contacts(){
var options = new ContactFindOptions();
options.filter="";
options.filter="";
options.multiple=true;
var fields = ["*"]; //"*" will return all contact fields
navigator.contacts.find(fields, onSuccess, onError, options);
}
// display the address information for all contacts
function onSuccess(contacts) {
//console.log(JSON.stringify(contacts))
var li = '';
$.each(contacts, function(key, value) {
if(value.name){
$.each(value.name, function(key, value) {
if(key == 'formatted'){
name = value;
}
});
}
if(value.phoneNumbers){
$.each(value.phoneNumbers, function(key, value) {
phone = value.value;
});
}
li += '<li style="text-decoration:none;">'+name+' '+phone+'</li>';
});
$("#contact").html(li);
}
function onError(contactError) {
alert('onError!');
}
Step6:
Added the following in "app/www/index.html"
<ol id="contact"></ol>
Step7
Added the following in app/res/xml/config.xml
<feature name="Contacts">
<param name="android-package" value="org.apache.cordova.contacts.ContactManager" />
</feature>
Step8
Added the following in app/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" />
Step9
$ cordova run android
答案 0 :(得分:1)
在Adroid上我成功测试了onSuccess并交换了字段,如下所示:
navigator.contacts.find(onSuccess, onError, fields, options);
这与手册相矛盾但有效。
在&#34;开发者应用程序&#34;它按照手册中的说明工作......
答案 1 :(得分:0)
如果要修改,请尝试了解给定应用程序的结构。
在这种情况下,“空”&#39; cordova项目在index.js中有一个app
- Object,它处理事件并隐藏(也给出)Splash-Screen。
您只需删除index.js中的所有代码,但在index.html中保留相应的元素。
这就是你的index.js应该如何工作(基于默认的cordova项目和你的代码,未经测试)
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
app.receivedEvent('deviceready');
app.openContacts();
},
receivedEvent: function(id) {
console.log('Received Event: ' + id);
},
openContacts:function(){
var options = new ContactFindOptions();
options.filter="";
options.filter="";
options.multiple=true;
var fields = ["*"]; //"*" will return all contact fields
navigator.contacts.find(fields, app.onSuccess, app.onError, options);
},
onSuccess:function(contacts) {
//console.log(JSON.stringify(contacts))
var li = '';
$.each(contacts, function(key, value) {
if(value.name){
$.each(value.name, function(key, value) {
if(key == 'formatted'){
name = value;
}
});
}
if(value.phoneNumbers){
$.each(value.phoneNumbers, function(key, value) {
phone = value.value;
});
}
li += '<li style="text-decoration:none;">'+name+' '+phone+'</li>';
});
$("#contact").html(li);
},
onError:function(contactError) {
alert('onError!');
}
};