【问题标题】:Android: Create Contact API 2.xAndroid:创建联系人 API 2.x
【发布时间】:2023-04-08 19:32:01
【问题描述】:

使用 API 我正在尝试创建联系人,使用 API 2.x 而不是旧版本。这里http://developer.android.com/guide/topics/providers/content-providers.html 只解释了旧的 API。我还没有找到任何合适的教程、示例等来展示如何创建联系人。据我所知,我必须创建一个原始联系人,在原始联系人下我从那里找到http://developer.android.com/reference/android/provider/ContactsContract.RawContacts.html 我试过了

ContentValues values = new ContentValues(); 
values.put(RawContacts.ACCOUNT_TYPE, accountType); //accountType = "xxxx"
values.put(RawContacts.ACCOUNT_NAME, accountName); //accountName = "aaaa"
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values); 
long rawContactId = ContentUris.parseId(rawContactUri); 
values.clear(); 
values.put(Data.RAW_CONTACT_ID, rawContactId); 
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); 
values.put(StructuredName.DISPLAY_NAME, "Mike Sullivan"); 
getContentResolver().insert(Data.CONTENT_URI, values);

最后一行代码显示“Data.CONTENT_URI”无法解析。看起来这行代码是针对 1.6 API 的,我把 Data.CONTENT_URI 改成了 ContactsContract.Data.CONTENT_URI。至少代码可以编译并执行,但之后我的地址簿中仍然没有联系人 Mike Sullivan。我现在也用“ContactsContract.Data”交换了其他“数据”,仍然没有变化。

谁有一个简单的例子,如何在 2.x 上的地址簿中创建一个人?

编辑:我取得了一些进展,看起来我总是需要手机上的帐户来添加联系人。我的手机有帐户类型 com.google 和帐户名称 xxxxx@gmail.com。模拟器什么都没有。我想知道我必须将我的联系人添加到哪个帐户?我可以假设我总是只有一个 gmail 帐户并使用这个帐户吗?

【问题讨论】:

    标签: android contactscontract


    【解决方案1】:

    你在寻找这样的东西吗?

    { // insert a new data item
        // first we need to get a raw contact corresponding to the contact.
        Cursor rawCur = getContentResolver().query(RawContacts.CONTENT_URI,
             new String[]{RawContacts._ID},
             RawContacts.CONTACT_ID + "=?",
             new String[]{String.valueOf(contactId)}, null);
    
        long rawContactId = -1;
        for (boolean moreRaws = rawCur.moveToFirst(); moreRaws;
            moreRaws = rawCur.moveToNext()) 
        {
            rawContactId = rawCur.getLong(rawCur.getColumnIndex(RawContacts._ID));
        }
    
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();    
    
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
           .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
           .withValue(ContactsContract.Data.MIMETYPE,
                         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
           .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,"y123-456-7890")
              .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
                         ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME)
           .build());
    
        try {
           ContentProviderResult[] results = 
                       getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
           logger.info("result: "+results[0]);
        } catch (UnsupportedOperationException ex) {
           ex.printStackTrace();
        } catch (RemoteException ex) {
           ex.printStackTrace();
        } catch (OperationApplicationException ex) {
           ex.printStackTrace();
        } 
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多