我想从联系人列表中选择一封电子邮件.选择联系人不够好,因为联系人可能有几封电子邮件.
使用API演示,我设法选择联系人,电话号码甚至地址.例:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
// OR
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
// OR
intent.setType(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
Run Code Online (Sandbox Code Playgroud)
但是,当试图选择一封电子邮件时
intent.setType(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
Run Code Online (Sandbox Code Playgroud)
我得到的活动没有发现异常.
有关如何从所有联系人的电子邮件中选择电子邮件的任何想法?
谢谢.阿利克.
更新(2011/05/02):找到另一种从联系人中挑选东西的方法,但仍未将电子邮件选择器注册到意图中.
工作:
new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI);
Run Code Online (Sandbox Code Playgroud)
不工作:
new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI);
Run Code Online (Sandbox Code Playgroud) 我试图在用户从联系人选择器中选择联系人后获取联系人姓名和电话号码.我试图使我的应用程序适用于SDK v3及以上,所以我创建了一个只调用我需要的API的抽象类.我已经有抽象类工作(它选择了正确的API),我也有SDK v3,4的API工作.我在使用ContactsContract的新API工作时遇到问题.
我可以获得联系人姓名,但它检索的号码始终是联系人ID之前的号码!示例:我有两个联系人"John Doe"和"Jane Doe",联系人中添加了相应的数字"555-555-555"和"777-777-7777".John Doe的ID = 1,Jane Doe的ID = 2.如果我试图获得Jane Doe的号码,我会得到John的,555-555-5555.如果我试图得到约翰的话,我什么也得不到.检查if(cursor.moveToNext())是否失败.
你能帮帮我解决这个问题吗?这让我发疯了.我看了很多例子,总是得到同样的错误.
Intent数据是来自onActivityResult的数据Intent
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
class NewContactsAdapterBridge extends ContactsAdapterBridge {
ArrayList<String> info = new ArrayList<String>();
ArrayList<String> getInfo (Activity a, Intent data) {
Uri contactData = data.getData();
Cursor cursor = a.managedQuery(contactData, null, null, null, null);
if (cursor.moveToFirst()) {
String id = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow
(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhoneNumber = cursor.getString(cursor.getColumnIndexOrThrow(
ContactsContract.Contacts.HAS_PHONE_NUMBER)); …Run Code Online (Sandbox Code Playgroud)