Articles of android contacts

Android ContactsContract:上次修改时间

我想将Android Contacts Phone克隆到我自己的SQLite数据库中。 为了节省时间,应在Android系统中新创建或更新单个联系人时触发克隆。 因此,我希望每个联系人都有“最后修改时间”。 对于API级别18或更高级别,似乎我将通过使用ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP获得单个人联系的最后修改时间。 但是对于API级别17或更低级别,似乎之前有一些讨论建议使用“ContactsContract.RawContacts.VERSION”或“CONTACT_STATUS_TIMESTAMP”。 对于“CONTACT_STATUS_TIMESTAMP”,它始终返回ZERO或null。 对于“ContactsContract.RawContacts.VERSION”,当我更新一个人的联系人的照片,电话号码或电子邮件时,版本保持不变。 很高兴如果有人会指出我犯的错误…… 参考: 如何获取联系人列表的最后修改日期(添加/删除/修改)

将生日变成联系人数据的正确方法是什么?

背景 我正在尝试更新联系人数据,并将每个数据的生日。 问题 似乎对于我尝试的每个设备(我甚至没有尝试过那么多设备),插入有一个或多个这些问题: 查看/编辑联系人时,无法单击和编辑brithdate。 查看/编辑联系人时,显示的格式与用户输入生日时显示的格式不同 缺少一年,或完全错误的一年。 查看联系人时,未显示生日,但在编辑时,会显示生日。 另外,相反。 我试过的 我尝试过使用时间戳和完整的ISO8601格式(因为这个链接 ,意思是“yyyy-MM-dd HH:mm:ss”)。 我也试过“yyyy-MM-dd”,我尝试使用设备日期的默认格式。 所有人都有上述问题(每个问题至少有一个)。 这是一段代码: final Date birthdate = … // String birthdateStr = new SimpleDateFormat(“yyyy-MM-dd”).format(birthdate); // String birthdateStr = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”, Locale.getDefault()).format(birthdate); // String birthdateStr = new SimpleDateFormat(((SimpleDateFormat) java.text.DateFormat.getDateInstance(java.text.DateFormat.DEFAULT, Locale.getDefault())).toLocalizedPattern(),Locale.getDefault()).format(birthdate); String birthdateStr = Long.toString(birthdate.getTime()/1000); final Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValue(Data.RAW_CONTACT_ID, …) .withValue(ContactsContract.Data.MIMETYPE, […]

如何在将联系信息加载到listview时避免重复的联系人姓名(数据)?

我正在填充联系人列表详细信息以成功列出视图。 我的代码: String order = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ” ASC”; Cursor curLog = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,order); 如何在列表视图中避免重复数据,因为联系人详细信息如果已加入联系人,即加入手机和Google,则会重复? 。 屏幕就像 我想以编程方式选择只有1个名字而不是两个名字? 任何想法我如何选择?

在Android应用程序中获取联系人

我正在关注这些链接以获取我的应用程序中的联系人 如何调用Android联系人列表? http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/ 我可以在手机上显示联系人列表 – 我想在每个联系人处添加一个checkbox,以便用户可以选择多个联系人,并通过单击完成按钮,他应该能够获得他选择的所有联系人 另外,我想获取联系人姓名以及联系电话号码,请参阅我的代码: if(resultCode == Activity.RESULT_OK){ Uri contactData = data.getData(); 游标c = managedQuery(contactData,null,null,null,null); if(c.moveToFirst()){ 字符串名称= c.getString(c .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 字符串编号= c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER)); Log.v(“name”,name +“”+ number); // TODO无论您想对所选联系人做什么 // 名称。 } } 在log cat上它显示输出为: 01-09 12:46:41.688: V/name(699): Xyz 1 这是联系人的名字是xyz,它至少有一个与之关联的电话号码。请帮助我如何获得与该联系人相关的号码。 编辑: 如果我在代码中使用这个( String number = c.getString(c.getColumnIndexOrThrow(People.NUMBER)); )行,我会得到以下exception: 01-09 13:33:23.008: E/AndroidRuntime(786): FATAL EXCEPTION: main 01-09 13:33:23.008: […]

如何从本机联系人/内容解析器获取联系人的Facebook ID或URL?

如何通过Facebook同步适配器获取已同步到本机联系人应用程序的联系人的Facebook ID或URL? 我浏览了不同的url,但没有看到有关Facebook的任何信息。 我试过了 ContactsContract.Data.CONTENT_URI ContactsContract.CommonDataKinds.Email.CONTENT_URI ContactsContract.CommonDataKinds.Phone.CONTENT_URI ContactsContract.Contacts.CONTENT_URI 作为以下代码中已有的URI: Uri uri = ContactsContract.Data.CONTENT_URI; Cursor c = getContentResolver().query(uri, null, null, null, null); while (c.moveToNext()) { for (int i=0; i<c.getColumnCount(); i++) { Log.d(TAG, c.getColumnName(i) + ": " + c.getString(i)); } Log.d(TAG, "=================================="); } 我确实得到了一个列值 contact_status_res_package: com.facebook.katana 在这个转储中,我也获得了联系人状态(contact_status列),但我无处可查看此联系人的facebookurl或ID。

从Intent.ACTION_PICK返回的URI中获取特定的联系信息

我正在编写一个Android应用程序,其数据types代表一个人(特别是孩子的父母或监护人)。 我希望能够从Android设备的“联系人”数据库​​中“导入”相关数据字段。 (这应该是可选的;也就是说,不要求父/监护人已经在联系人数据库中,如果他们添加新的父母/监护人,也不会更新联系人数据库。) 到目前为止,我已经编写了代码来启动一个新的Intent来选择特定的Contact(使用Intent.ACTION_PICK)。 然后,我获得一个表示数据库中特定联系人的URI。 不幸的是,我不知道下一步是什么。 看起来这应该是世界上最简单的事情,但显然不是。 我已经阅读了Android开发者网站上的文档,我查看了多本Android手册。 没有快乐。 我想得到的具体信息是: 联系人姓名(如果可能,首先和最后一个) 联系人(主要)电子邮件地址 联系人的手机号码 我想通过使用ContentResolver查询应该可以做到这一点,但是我不知道如何使用Intent返回的URI来做到这一点。 大多数文档假定您具有联系人ID,而不是联系人的URI。 此外,我不知道我可以在查询的投影中添加哪种字段,假设这甚至是我想要的正确方法。 这是我的起始代码: // In a button’s onClick event handler: Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT); // In onActivityResult: if (resultCode == RESULT_OK) { if (requestCode == PICK_CONTACT) { contactURI = data.getData(); // NOW WHAT? } }

在Android中获取Contact Sync的更新联系人

我正在使用Android中的Contact Sync,我已经成功完成了首次使用Contact Sync。 这就是我在做的事情。 1.获取所有联系人并使用Contact._ID保存数据库中的每个联系人2.获取姓名和电话号码并保存在数据库中。 之后,我将联系人数据发送到服务器,以便更新服务器。 现在问题是如何检查我的特定联系人是否更新? 我已经实现了广播接收器,以便我的应用可以了解联系人的更新/添加/删除。 但我想特别联系。 我find了一个解决方案,即Dirty Flag。 它告诉我们联系方式是否更新,以下是参考链接: http : //developer.android.com/reference/android/provider/ContactsContract.RawContacts.html 但我无法使用这个脏旗,有人可以通过实施脏旗帮助我。 提前致谢 !

Android – 使用AccountManager /手机所有者的名字和姓氏获取UserData

我想预先填充我的应用程序中的一些字段,以帮助用户在我的应用程序内订阅服务。 那么我如何获得设备所有者的名字和姓氏。 我想使用与Google帐户绑定的默认信息; 到目前为止我得到了这个: AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccounts(); for (Account account : accounts) { if (account.type.compareTo(“com.google”) == 0) { String possibleEmail = account.name; // how to get firstname and lastname here? } } 如果你建议,我愿意采取其他方法 – 只要我能得到所有者的电子邮件,名字和姓氏。

permission.READ_CONTACTS似乎不起作用

我正在开发一个浏览用户联系人的简单应用程序。 不幸的是我一直收到以下错误: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/contacts from pid=27455, uid=10171 requires android.permission.READ_CONTACTS 我的清单文件如下所示: 我试图通过以下方式查看我的联系人: Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 我试图将或android:permission=”android.permission.READ_CONTACTS”到或 ,但两者都不起作用。 我的选择已经用完了,有人知道我在这里缺少什么吗?

如何在地址簿中收听插入/更新/删除的联系人

有很多与之相关的问题,但没有一个能帮助我find解决方案。 我正在尝试将所有联系人从设备同步到远程服务器并且能够轻松地执行此操作但是当更新/删除/插入(新联系人)等联系人发生更改时无法find解决方案。 尝试使用ContentObserver但onChange()被多次调用。 很难find联系人更改数据。 public class ContactService extends Service { private int mContactCount; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); mContactCount = getContactCount(); Log.d(“Contact Service”, mContactCount + “”); this.getContentResolver().registerContentObserver( ContactsContract.Contacts.CONTENT_URI, true, mObserver); } private int getContactCount() { Cursor cursor = null; try { cursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, […]