我已经CNContactPickerViewController
使用内置iOS CNContactPickerDelegate
来获取联系号码,
在CNContactPickerViewController
屏幕中,当我点击顶部的搜索字段并搜索名称时,我需要将该名称添加到我的选择中,但在点击联系人后没有任何反应.
我到处搜索,并找到任何解决方案
我是否需要在代码中添加任何内容,或者是iOS 9错误
@IBAction func AddBtnKlkFnc(sender: AnyObject)
{
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
contactPicker.displayedPropertyKeys =
[CNContactPhoneNumbersKey]
self.presentViewController(contactPicker, animated: true, completion: nil)
}
func contactPicker(picker: CNContactPickerViewController, didSelectContacts ContctAryVar: [CNContact])
{
for ContctVar in ContctAryVar
{
let ContctDtlVar = ContctDtlCls()
ContctDtlVar.ManNamVar = CNContactFormatter.stringFromContact(ContctVar, style: .FullName)!
for ContctNumVar: CNLabeledValue in ContctVar.phoneNumbers
{
var MobNumVar = ((ContctNumVar.value as! CNPhoneNumber).valueForKey("digits") as? String)!
if(MobNumVar.Len() > 10)
{
MobNumVar = MobNumVar.GetLstSubSrgFnc(10)
}
ContctDtlVar.MobNumVar = …
Run Code Online (Sandbox Code Playgroud) 您好我想从我们的默认联系簿意图中选择一个联系人.我尝试了几种方法来做到这一点.请在下面找到代码.所有这些代码的问题在于,他们打开一个中间文档屏幕,用户必须选择联系人,而不是打开联系簿.
private void openContactIntent() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
startActivityForResult(intent, REQ_CONTACT_DIRECTORY);
}
Run Code Online (Sandbox Code Playgroud)
我也试过了
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
Run Code Online (Sandbox Code Playgroud)
和
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
Run Code Online (Sandbox Code Playgroud)
android android-intent android-contacts android-implicit-intent contactpicker
我有一个iOS应用程序,需要访问联系人选择器视图控制器,以允许用户选择联系人属性,如电子邮件地址/ imessage电子邮件地址的电话号码.
我现在遇到的问题是,我无法弄清楚如何解析返回的数据.我已经使用了该contactPicker didSelectContactProperty
方法,但我无法解析我需要的数据.
-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {
CNLabeledValue *test = contactProperty.contact.emailAddresses.firstObject;
NSLog(@"%@", test);
NSLog(@"%@", contactProperty.contact.phoneNumbers);
}
Run Code Online (Sandbox Code Playgroud)
如果您运行上面的代码,您会得到以下响应:
2015-10-11 13:30:07.059 Actions[516:212765] <CNLabeledValue: 0x13656d090: identifier=21F2B1B2-8158-466B-9224-E2036CA07D28, label=_$!<Other>!$_, value=News_Europe@iEUNS.com> 2015-10-11 13:30:07.061 App_Name[516:212765] (
"<CNLabeledValue: 0x13672a500: identifier=6697A0E9-3B91-4566-B26E-83B87979F816, label=_$!<Main>!$_, value=<CNPhoneNumber: 0x13672a660: countryCode=gb, digits=08000391010>>" )
Run Code Online (Sandbox Code Playgroud)
多数民众赞成,但如何从中提取我需要的数据呢?为什么NSLog语句以奇怪的格式返回数据?
谢谢你的时间,丹.
我试图通过以下快速入门获取Windows Phone 8.1 SL应用程序中的联系信息:选择用户联系人
在我的功能中,
private async void PickAContactButton_Click(object sender, RoutedEventArgs e)
{
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
contactPicker.desiredFieldsWithContactFieldType.add(Windows.ApplicationModel.Contacts.ContactFieldType.email);
Contact contact = await contactPicker.PickContactAsync(); // this throws System.NotImplementedException
// Additional information: The method or operation is not implemented.
if (contact != null)
{ ... }
}
Run Code Online (Sandbox Code Playgroud)
完全相同的功能适用于Windows Phone 8.1 RT.ContactPicker
根据此参考, WP 8.1 RT和WP 8.1 SL均支持class .
知道发生了什么事吗?
我使用新的 CNContactPickerViewController 从地址簿中选择联系人并在我的应用程序中使用它们。
当我按下按钮时,我调用此代码:
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
contactPicker.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
presentViewController(contactPicker, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
我使用以下 CNContactPickerDelegate 方法来选择多个联系人:
func contactPicker(picker: CNContactPickerViewController, didSelectContacts contacts: [CNContact]) {
selectedRecipients = contacts.map { $0.emailAddresses.first!.value as! String }
tableView.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
这有助于我填充一个名为“selectedRecipients”的数组(基本上是一组 emailAddresses 字符串)
这工作正常。但是,如果我之前选择了联系人,我希望contactPicker在初始化时预先选择联系人,即在出现时将联系人显示为已选择。有没有办法做到这一点?
谢谢
我正在使用CNContactPickerViewController,我想隐藏我尝试的取消和组按钮 contactPickerViewController.navigationItem.leftBarButtonItem = nil
,
contactPickerViewController.navigationItem.hidesBackButton = true
Run Code Online (Sandbox Code Playgroud)
但这不起作用..在这里,我的代码来创建控制器
let contactPickerViewController = CNContactPickerViewController()
contactPickerViewController.predicateForEnablingContact = NSPredicate(format: "phoneNumbers.@count > 0",
argumentArray: nil)
contactPickerViewController.delegate = self
contactPickerViewController.navigationItem.leftBarButtonItem = nil
contactPickerViewController.navigationItem.hidesBackButton = true
presentViewController(contactPickerViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
帮助任何人?谢谢
在这段代码中我添加了编程VC:
@IBAction func addPerson(_ sender: UIBarButtonItem) {
let controller = CNContactPickerViewController()
controller.delegate = self
navigationController?.present(controller, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
我点击联系人时使用另一个VC(将信息显示在单元格中,然后我想在我的第一个VC中显示电话/电子邮件的复选框)
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
let vc = EditContactViewController()
self.navigationController?.pushViewController(vc, animated: true)
Run Code Online (Sandbox Code Playgroud)
我为下一个单元格创建了一个类,当我在tableView cellForRowAtIndexPath中执行此操作时,我在storyboard中将标识符设置为单元格
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? ConfigCell
return cell!
Run Code Online (Sandbox Code Playgroud)
这给了我:
fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)
我也试过withIdentifier,forIndexPath,它说:
2016-11-12 01:35:28.626 iEvents3 [2637:47714]***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符单元格对单元格出列 - 必须为该单元格注册一个nib或类标识符或连接故事板中的原型单元格'
我删除了重用标识符并将其重新放回,清理了应用程序,重启,一切.
感谢您的时间!
我在使用“联系人选择器”时遇到麻烦,它可以与Phone.DISPLAY_NAME和Phone.NUMBER一起使用,但不能与Email.ADDRESS一起使用
public class CustomerForm extends Activity {
private final static int CONTACT_PICKER = 1;
private EditText txtMailContacto;
private EditText txtNombreContacto;
private EditText txtTelefono;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customer_form);
txtMailContacto = (EditText) findViewById(R.id.txtMailContacto);
txtTelefono = (EditText) findViewById(R.id.txtTelefono);
txtNombreContacto = (EditText) findViewById(R.id.txtNombreContacto);
}
public void pickContact(View v)
{
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// check whether the result is ok
if (resultCode == RESULT_OK) { …
Run Code Online (Sandbox Code Playgroud) cncontact ×3
ios ×3
android ×2
swift ×2
c# ×1
cocoa-touch ×1
contact ×1
email ×1
ios9 ×1
objective-c ×1
picker ×1
search ×1
silverlight ×1
swift2 ×1