Articles of contactscontract

在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 = […]

不能插入android的联系人编程到Android设备

ArrayList<ContentProviderOperation> ops =new ArrayList<ContentProviderOperation>(); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValue(Data.RAW_CONTACT_ID, 3) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "999999999") .withValue(Phone.TYPE, Phone.TYPE_CUSTOM) .withValue(Phone.DISPLAY_NAME, "hhhhhhh") .withValue(ContactsContract.CommonDataKinds.Email.DATA, "abcd@gmail.com") .build()); ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) .withValue(Data.RAW_CONTACT_ID, 4) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "999999999") .withValue(Phone.TYPE, Phone.TYPE_CUSTOM) .withValue(Phone.DISPLAY_NAME, "hhhlllllllllll") .withValue(ContactsContract.CommonDataKinds.Email.DATA, "efgh@gmail.com") .build()); try { cr.applyBatch(ContactsContract.AUTHORITY, ops); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (OperationApplicationException e) { // TODO Auto-generated […]

如何将结构化数据添加到新联系人意图

我需要支持Android 2.1及以上。 Google公布了一个如何使用ContactsContract的例子,但是其中一些使用了从API级别11开始可用的东西,所以我需要即兴创作,但是我被卡住了。 所以,我有这个: String firstName = contactProperties.get("firstName"); String lastName = contactProperties.get("lastName"); String phone = contactProperties.get("phone"); String email = contactProperties.get("email"); String company = contactProperties.get("company"); String postal = contactProperties.get("street") + ", " + contactProperties.get("city") + ", " + contactProperties.get("state") + " " + contactProperties.get("zip") + " " + contactProperties.get("country"); // Creates a new intent for sending […]

读取所有联系人数据

我在Android 2.3.3,API Level 10上。我想读取与它们相关的所有联系人和数据,例如所有的电子邮件地址,电话号码,自定义字段…我试过这样: Uri contactUri = ContactsContract.Contacts.CONTENT_URI; Cursor contacts = managedQuery(contactUri, null, null, null, null ); contacts.moveToFirst(); do { for(int i=0;i<contacts.getColumnCount();i++) { System.out.println(contacts.getColumnName(i) + ": " + contacts.getString(i)); } System.out.println("============\n\n"); } while (contacts.moveToNext()); contacts.close(); 但是,这只给了我以下领域: times_contacted: 0 contact_status: null custom_ringtone: null has_phone_number: 1 phonetic_name: null phonetic_name_style: 0 contact_status_label: null lookup: [removed] contact_status_icon: null last_time_contacted: […]

在Android中从URI中检索联系人电话号码

我正在尝试从内置活动中获取联系人的电话号码。 但是,每当我在下面的代码中使用光标查询数据库时 – 即使有我select的联系人的手机号码,我也会返回零行。 任何人都可以指出我在一个更好的方向,或显示如何获得联系人的电话号码获取其用户ID后的例子? 我的代码: private Runnable getSMSRunnable() { return new Runnable() { public void run() { Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(i, CONTACTS_REQUEST_CODE); } }; } 返回日志输出 content://com.android.contacts/data/6802 从中我将ID(6802)传递到一个方法,该方法devise为从具有给定types的ID返回电话号码(在本例中为ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) public static String getContactPhoneNumberByPhoneType(Context context, long contactId, int type) { String phoneNumber = null; String[] whereArgs = new String[] { String.valueOf(contactId), String.valueOf(type) }; […]

获取联系人的姓名,而不是单个显示名称?

我目前正在使用Android联系人内容提供程序,并且当前可以使用以下代码访问联系人完整显示名称而不会造成问题: String[] PROJECTION = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.HAS_PHONE_NUMBER, }; String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; String SELECTION = "LOWER(" + ContactsContract.Contacts.DISPLAY_NAME + ")" + " LIKE '" + constraint + "%' " + "and " + ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'"; Cursor cur = managedQuery(ContactsContract.Contacts.CONTENT_URI, PROJECTION, SELECTION, null, sortOrder); 不过,我希望能够分别获得联系人姓氏和姓氏,我试图使用StructuredName试图得到这个,但我似乎无法得到它的工作。 […]