使用 sencha touch 2.4.1 从 iphone 获取联系人
Get contacts from iphone using sencha touch 2.4.1
我正在尝试使用以下代码片段从 iphone4s (ios 8.1.2) 获取联系人。
if (Ext.os.deviceType == 'Phone'){
var contactsConfig = {
success: function( contacts){
Ext.Msg.alert('Contacts?', contacts.length, Ext.emptyFn);
},
failure: function(context){
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
}
我的 phonegap config.xml 有权读取联系人
<feature name="Contacts">
<param name="ios-package" value="CDVContacts" />
</feature>
但我总是最终会在 Ext.device.contacts.Abstract
中硬编码联系人
有没有人能够联系到 sencha touch 2.4.x?或者更旧的版本?
如有任何帮助,我们将不胜感激。
经过多次尝试,我终于解决了这个问题。
第 1 步:Phonegap 可以读取 iOS 个联系人。
第 2 步:调用 Ext.device.contacts.getContacts()。 Sencha touch 2.4 documentation is wrong.
第 3 步:将正确的参数传递给导航器函数。 Ext.browser.is.Cordova 或 .Sencha 也不起作用。所以更换它们。
第 4 步:导航器功能需要 Cordova.js。
确保在 phonegap 项目中,config.xml 在不同的位置(即,/www,//)有以下内容
<feature name="Contacts">
<param name="ios-package" value="CDVContacts" />
正确调用 get contacts()
var opts = new ContactFindOptions();
opts.filter = "";
opts.multiple = true;
var contactsConfig = {
options: opts,
fields: ["name", "phoneNumbers"],
success: function(contacts) {
Ext.Msg.alert('Simple contacts', contacts.length, Ext.emptyFn);
},
failure: function(context) {
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
- 在您的 sencha 项目中,转到 touch/src/device 并更改 Contacts.js 和 contacts/Cordova.js分别
Ext.define('Ext.device.Contacts', {
singleton: true,
requires: [
'Ext.device.Communicator',
'Ext.device.contacts.Sencha',
'Ext.device.contacts.Cordova'
],
constructor: function() {
return Ext.create('Ext.device.contacts.Cordova');
}
});
Ext.define('Ext.device.contacts.Cordova', {
alternateClassName: 'Ext.device.contacts.PhoneGap',
extend: 'Ext.device.contacts.Abstract',
getContacts: function(config) {
if (!config) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `config` object.');
return false;
}
if (!config.success) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `success` method.');
return false;
}
if (!config.fields) {
config.fields = ["*"];
}
if (!Ext.isArray(config.fields)) {
config.fields = [config.fields];
}
if (Ext.isEmpty(config.multiple)) {
config.multiple = true;
}
navigator.contacts.find(config.fields, config.success, config.failure, config.options);
}
});
- 在index.html
中包含cordova.js
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
我正在尝试使用以下代码片段从 iphone4s (ios 8.1.2) 获取联系人。
if (Ext.os.deviceType == 'Phone'){
var contactsConfig = {
success: function( contacts){
Ext.Msg.alert('Contacts?', contacts.length, Ext.emptyFn);
},
failure: function(context){
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
}
我的 phonegap config.xml 有权读取联系人
<feature name="Contacts">
<param name="ios-package" value="CDVContacts" />
</feature>
但我总是最终会在 Ext.device.contacts.Abstract
中硬编码联系人有没有人能够联系到 sencha touch 2.4.x?或者更旧的版本?
如有任何帮助,我们将不胜感激。
经过多次尝试,我终于解决了这个问题。
第 1 步:Phonegap 可以读取 iOS 个联系人。
第 2 步:调用 Ext.device.contacts.getContacts()。 Sencha touch 2.4 documentation is wrong.
第 3 步:将正确的参数传递给导航器函数。 Ext.browser.is.Cordova 或 .Sencha 也不起作用。所以更换它们。
第 4 步:导航器功能需要 Cordova.js。
确保在 phonegap 项目中,config.xml 在不同的位置(即,/www,//)有以下内容
<feature name="Contacts"> <param name="ios-package" value="CDVContacts" />
正确调用 get contacts()
var opts = new ContactFindOptions();
opts.filter = "";
opts.multiple = true;
var contactsConfig = {
options: opts,
fields: ["name", "phoneNumbers"],
success: function(contacts) {
Ext.Msg.alert('Simple contacts', contacts.length, Ext.emptyFn);
},
failure: function(context) {
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
- 在您的 sencha 项目中,转到 touch/src/device 并更改 Contacts.js 和 contacts/Cordova.js分别
Ext.define('Ext.device.Contacts', {
singleton: true,
requires: [
'Ext.device.Communicator',
'Ext.device.contacts.Sencha',
'Ext.device.contacts.Cordova'
],
constructor: function() {
return Ext.create('Ext.device.contacts.Cordova');
}
});
Ext.define('Ext.device.contacts.Cordova', {
alternateClassName: 'Ext.device.contacts.PhoneGap',
extend: 'Ext.device.contacts.Abstract',
getContacts: function(config) {
if (!config) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `config` object.');
return false;
}
if (!config.success) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `success` method.');
return false;
}
if (!config.fields) {
config.fields = ["*"];
}
if (!Ext.isArray(config.fields)) {
config.fields = [config.fields];
}
if (Ext.isEmpty(config.multiple)) {
config.multiple = true;
}
navigator.contacts.find(config.fields, config.success, config.failure, config.options);
}
});
- 在index.html 中包含cordova.js
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>