Articles of android contacts

从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, […]

从android中的电话簿中选择多个联系人

我需要从android中的电话簿中选择联系电话/电子邮件。 我已经看到从这个链接中选择一个联系人并将结果返回到onActivityResult 。 但我需要从电话簿中选择多个联系人。 怎么做到这一点? 我不想制作我的自定义列表,有没有办法使用内置function的机器人?

了解Android联系人的架构

我正在开发一个Android应用程序,需要知道何时添加/更新/删除联系人。 所以我读了几篇post。 我知道,只要联系人发生变更,我们就可以通过内容观察员获得通知,但我们无法获得添加/更新/删除的联系人。 所以我已阅读官方API并准备我的设计如何捕获该特定联系人。 所以我一开始就想到了什么 我们将存储所有联系人ID,已删除标志和版本 每当联系人发生变化时,我都会从Android的系统中获取我的表的行数和行数。 如果我的rowcount小于系统行计数,则删除联系人。 如果我的rowcount大于系统行计数,则添加了联系人。 如果不是这些情况,则其中一个联系人版本已更改。 我还了解到,如果用户删除了联系人,Android不会删除联系人,但是在删除的标志上设置为0。 因此在这些情况下,行数将相同。 如官方文档中所述,Android还会多次更改联系人的行ID。 那么我们如何能够像查询uri一样唯一地识别它们,如果没有,那么我们也必须为它设置观察者。 所以我想知道上述内容是否正确? 并且在添加联系人的情况下,它将被添加到游标的最后一行或不意味着如果我检查系统数据库的最后一行是否接触,它将给我添加或不添加联系人。

如何更新现有联系人?

我有一个现有联系人,我需要为现有联系人添加工作地址。 我使用以下代码,但它不起作用。 String selectPhone = Data.CONTACT_ID + “=? AND ” + Data.MIMETYPE + “='” + ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE + “‘” + ” AND ” + ContactsContract.CommonDataKinds.StructuredPostal.TYPE + “=?”; String[] phoneArgs = new String[] {String.valueOf(ContactId), String.valueOf( ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)}; ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI) .withSelection(selectPhone, phoneArgs) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.STREET, STREET) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.CITY, CITY) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.REGION, REGION) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, POSTCODE) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, COUNTRY) .build()); this.context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 对此有何解决方案?

只有电话号码的Android联系人选择器

我发现要启动过滤版本的联系人选择器(只显示有电话号码的联系人),我可以使用这个: Intent pickContactIntent = new Intent( Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI ); pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(pickContactIntent, CONTACT_PICKER_RESULT); 这样可行。 我只想弄清楚如何在onActivityResult方法中检索所选联系人的姓名和电话号码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // what goes here… } 我在onActivityResult中尝试了很多不同的东西,但是查询没有返回数字。

插入新的联系意图

对于我的某个应用,我需要用户选择其中一个现有联系人或创建一个新联系人。 使用以下代码很容易选择一个: i = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startActivityForResult(i, PICK_CONTACT_REQUEST ); 现在我想创建一个新的联系人。 我尝试使用该代码,但它不会触发活动结果: i = new Intent(Intent.ACTION_INSERT); i.setType(Contacts.CONTENT_TYPE); startActivityForResult(i, PICK_CONTACT_REQUEST); 上面的代码将启动联系人添加表单。 然后,当我validation它时,它只是要求我打开联系人列表,并且永远不会触发onActivityResult方法。 你能帮我把它搞定吗? 我在某些电路板上看到这是不可能的,我必须创建自己的联系人添加表格。 你能证实吗? 编辑:问题解决了。 检查我的答案。