Articles of contactscontract

Android联系人照片:如何从网上取回(谷歌)联系人图片(以及’取消’以前的本地图片更改)

我是唯一一个试图实现这一目标的人……:/? 简而言之: 我想取回我的联系人的图片,因为他们自己定义了它(例如在他们自己的Google帐户页面上)。 使用案例:我自己修改了一个联系人的图片,现在,我想要撤消这个更改 – >我想’取回’我的联系人的谷歌图片(由他/她自己设置)。 我有一个管理Google通讯录的应用。 它还使用管理联系人照片 ContactsContract.CommonDataKinds.Photo.PHOTO 它工作正常。 这是我想支持的场景: 我在我的联系人列表中添加了一个新联系人,输入了它的gmail地址。 (好) 过了一段时间,联系人照片可以在我的联系人应用程序上find(因为联系人在其Google帐户上有一张图片,并且Android设备上的联系人同步已开启)。 (好) 在我的应用程序中,我更改了应用程序联系人图片(所以,我’覆盖’联系人图片)(确定) 在我的应用程序中,我想要恢复默认的Google联系人图片: 不行。 我怎样才能做到这一点? 请在这里查看我的代码来设置照片。 我应该“清除”照片并依赖于ContactProvider从Google帐户下载用户照片吗? 我该如何清除照片。 将ContactsContract.CommonDataKinds.Photo.PHOTO设置为’null’? 并删除相关文件,即 Uri rawContactPhotoUri = Uri.withAppendedPath(ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), RawContacts.DisplayPhoto.CONTENT_DIRECTORY) 谢谢你的帮助。 以下是我更新图片的方式: private void updatePhotoThumbnail(Bitmap bitmap, Contact contact) throws Exception { byte[] contactPhotoBytes = getContactPhotoBytes(bitmap); ArrayList ops = new ArrayList(); // @formatter:off String where = […]

如何使整列列表视图可点击?

我正在尝试为我的应用程序制作多个联系人选择器。 我正在使用带checkbox的自定义布局来选择多个联系人。 我面临的问题是,为了选择任何特定的联系人我需要在checkbox上完全点击,如果我点击该行的其他部分,则checkbox不会被勾选。 如何确保用户在整行中单击的位置勾选checkbox。 activity_contacts_picker.xml custcontactview.xml ContactsPicker.java public class ContactsPicker extends ListActivity { protected Object mActionMode; public int selectedItem = -1; private Button btnShowContacts; private ListView myListView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contacts_picker); myListView = getListView(); btnShowContacts = (Button) findViewById(R.id.btnShow); btnShowContacts.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Toast.makeText(getApplicationContext(), “Button Clicked”, Toast.LENGTH_SHORT).show(); String name […]

如何以编程方式创建联系人

可能重复: 如何在android中添加新联系人 public boolean createContact(String name, String number, String email) { boolean success = true; try { ContentValues contentValues = new ContentValues(); ContentResolver contentResolver = getContentResolver(); contentValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); contentValues.put(Phone.NUMBER, “123254”); Uri uri = contentResolver.insert(android.provider.ContactsContract.Data.CONTENT_URI, contentValues); if(uri==null) { success = false; } } catch (Exception e) { e.printStackTrace(); success = false; } return success; } 我得到NullPointerexception我不知道为什么我还指定了WRITE_CONTACTS权限。 […]

通过Intent with Image插入联系人(ContactsContract)(照片)

有许多Q&A线程,但没有一个提供真正的答案,或者我找不到它。 为了确保你,我先问了一下: Android:使用ContactsContract插入意图设置联系人照片 (无效答案) 在Android中使用ContactsContract插入联系人 (接受的答案不使用Intent) 插入新的联系方式 (不触及问题) 如何在通话意图中插入照片? (不相关) 将照片添加到联系人 (不使用意图) https://stackoverflow.com/a/8574396/492624 (解决方案我尝试了意图,PHOTO和DATA15字段,但没有工作) http://thinkandroid.wordpress.com/2009/12/30/handling-contact-photos-all-api-levels/ (不使用意图) 那么有谁知道如何使用Intent(如示例代码中)并插入一个Photo,它是在Bitmap中保存的? 示例代码我现在用来启动对话意图,让用户在保存之前插入或取消并可能编辑字段: // PrivateContactClass c; // Bitmap photo; Intent inOrUp = new Intent(ContactsContract.Intents.Insert.ACTION, ContactsContract.Contacts.CONTENT_URI); inOrUp.setType(ContactsContract.Contacts.CONTENT_TYPE); inOrUp.putExtra(ContactsContract.Intents.Insert.NAME, ModelUtils.formatName(c)); inOrUp.putExtra(ContactsContract.Intents.Insert.PHONE, getPrimaryPhone()); inOrUp.putExtra(ContactsContract.Intents.Insert.TERTIARY_PHONE, c.getMobile()); inOrUp.putExtra(ContactsContract.Intents.Insert.EMAIL, c.getMail()); inOrUp.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, c.getFunction()); inOrUp.putExtra(ContactsContract.Intents.Insert.NOTES, getSummary()); inOrUp.putExtra(ContactsContract.Data.IS_SUPER_PRIMARY, 1); startActivity(inOrUp); 由于Julien的回答,我find了解决方案 不仅仅使用intent,因为我怀疑我们可以传递Data ContentProvider保存的图像的ID,或者直接在Intent中传递Bitmap。 从上面的代码扩展 将startActivityForResult与常量请求代码一起使用 // must be declared […]

Android 3.0 – 如何通过ContactsContract检索所有联系人

我正在开发Android Honeycomb(v3.0)应用程序,该应用程序需要显示存储在设备上注册的Google帐户中的所有联系人。 我遇到的一个问题是,我只能检索“我的联系人”,“Android中已加星标”和“其他联系人”中可用的联系人。 我还希望能够从“目录”中检索联系人。 我认为“目录”部分是Google为希望向其他人提供其域内所有成员/员工目录的组织和公司提供的function。 请看下面的截图: 到目前为止,我的清单文件中有以下行: 我试过使用这段代码: Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); } cursor.close(); 在我的情况下,“我的联系人”和“在Android中加星标”是空的。 但是,获得了“其他联系人”中的(1)联系人。 但是,“目录”包含数百个未检索的联系人。 我的问题:有没有办法确保检索“目录”中的联系人? 我知道我可以简单地使用网络浏览器复制联系人,然后将它们同步到设备,但如果将新联系人添加到“目录”,我每次都必须手动执行此操作,因此这不是对我来说很棒的选择。 请指教。

在Android中使用ContactsContract插入联系人

我正在尝试直接向Android 2.2联系人添加新联系人。 //this code doesn’t work ContentValues cv=new ContentValues(); cv.put(ContactsContract.Contacts.DISPLAY_NAME, “TESTEST”); Uri u= getContentResolver().insert(ContactsContract.Contacts.CONTENT_URI, cv); 给我错误“自动创建聚合联系人”。 我究竟做错了什么? 这会调用Android的添加联系人表单 : //this code works but it’s not ideal Intent i = new Intent(Intent.ACTION_INSERT_OR_EDIT); i.setType(Contacts.CONTENT_ITEM_TYPE); i.putExtra(Insert.NAME, “TESTTEST”); i.putExtra(Insert.PHONE, “209384”); startActivity(i); 我无法弄清楚如何发送它的名字和姓氏 – 只是它放在名字框中的’名字’。 此外,我想将邮政编码分为街道,城市,州和邮政编码,现在这些编码都被放入街道邮箱。

修改联系信息

我正在尝试插入和更新现有联系人的一条信息,因此我创建了一个示例应用程序以开发function。 我希望我的示例应用程序执行的操作是插入(或者如果存在)更新联系人的电子邮件地址。 我正在通过系统Intent选择一个联系人,如下所示: startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), PICK_CONTACT_REQUEST); 返回的URI是Contact ( RawContact ?)的URI,它被选中并以这种forms出现: content://com.android.contacts/contacts/lookup/0r2-2A90214945/2 。 我可以通过执行以下代码来撤回所有Data ( RawContact ?)项目: Cursor cursor = contentResolver.query(mContactUri, null, null, null, null); try { if (cursor.moveToFirst()) { for(int i=0; i < cursor.getColumnCount(); i++) { String message = cursor.getColumnName(i); Log.v("", message); } } } finally { cursor.close(); } 从这里我应该能够确定联系人是否已经有一个CommonDataTypes.Email Data成员: cursor.getColumnIndex(CommonDataKinds.Email.CONTENT_ITEM_TYPE) != -1; […]

如何在一个SQLite查询中获取联系人ID,电子邮件,电话号码? 联系人Android优化

我希望至少使用一个电话号码获取所有联系人,我也想要每个联系人的所有电话号码和所有电子邮件。 当前代码: // To get All Contacts having atleast one phone number. Uri uri = ContactsContract.Contacts.CONTENT_URI; String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + ” > ?”; String[] selectionArgs = new String[] {“0”}; Cursor cu = applicationContext.getContentResolver().query(uri, null, selection, selectionArgs, null); // For getting All Phone Numbers and Emails further queries : while(cu.moveToNext()){ String id = cu.getString(cu.getColumnIndex(ContactsContract.Contacts._ID)); // […]

隐式连接列如何与Android联系人数据一起使用?

我正在查询ContactsContract.Data表以查找电话记录。 我创建一个新的CursorLoader时出错: java.lang.IllegalArgumentException: Invalid column deleted 我的代码: import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Data; … String[] projection = { Phone.DELETED, Phone.LOOKUP_KEY, Phone.NUMBER, Phone.TYPE, Phone.LABEL, Data.MIMETYPE, Data.DISPLAY_NAME_PRIMARY }; // “mimetype = ? AND deleted = ?” String selection = Data.MIMETYPE + ” = ? AND ” Phone.DELETED + ” = ?”; String[] args = {Phone.CONTENT_ITEM_TYPE, “0”}; return new CursorLoader( […]

在Android设备中使用ACTION_PICKE意图仅显示联系人的电话号码

我的目标是只显示联系人的电话号码给用户,让用户select一些我想本地存储的联系人。 我在下面的方法中使用了各种选项来代替ContactsContract.Contacts.CONTENT_URI。 但是,我得到了很多的联系人(很多是垃圾邮件只有电子邮件ID)显示。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contact_selector); ((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(contactIntent, 1); } }); } 如果传递ContactsContract.Contacts.CONTENT_URI作为上述方法的参数,并且在下面的处理方法的情况下,查询方法的String []作为投影参数(显示注释),则该方法将失败,并返回java.lang.IllegalArgumentException。 如果我在下面的方法中传递null,那么无论我select什么联系,我都没有find任何与电话号码或电子邮件相关的列。 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(data != null) { Uri uri = […]