【问题标题】:Add a photo to a contact将照片添加到联系人
【发布时间】:2011-12-20 10:43:48
【问题描述】:

我正在尝试将联系人添加到电话通讯录中。
我已经成功:我添加了一个新联系人并为其分配了一个手机号码。

现在我需要将资源目录中的 JPG 添加到联系人作为联系人照片。
我正在寻找教程,但找不到任何教程。

我需要针对旧手机,所以我需要使用旧的联系人 API。

谁能帮忙?

ContentValues contact = new ContentValues();

contact.put(People.NAME, "testContact");
Uri insertUri = activity.getContentResolver().insert(People.CONTENT_URI, contact);

Uri phoneUri = Uri.withAppendedPath(insertUri, People.Phones.CONTENT_DIRECTORY);
contact.clear();
contact.put(People.Phones.TYPE, People.TYPE_MOBILE);
contact.put(People.NUMBER, "12128911");


updateUri = activity.getContentResolver().insert(phoneUri, contact);

【问题讨论】:

    标签: android image contacts


    【解决方案1】:

    我用的是新的 APi 8+,你也可以用这个,(为了支持低版本在清单文件中使用你想要的 minSDKVersion..)

    而我正在做的是,(我使用的是 .PNG 格式的位图)

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.PNG , 75, stream);
    
    operations.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
               .withValue(ContactsContract.Data.RAW_CONTACT_ID, 9) // here 9 is _ID where I'm inserting image
               .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1)
               .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)
               .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO,stream.toByteArray())
               .build());
    
        try {
             stream.flush();
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
    

    【讨论】:

    • 这是使用旧手机不可用的 ContactsContract 类(
    • 是的,我已经提到过,它来自 8+,这就是为什么我告诉你使用它并在清单中放入你想要的 minsdkversion ..
    • 对不起,我是 Android 新手,这适用于运行 Android 1.6、2.1 等的手机吗?我以为这些库是在以后的版本中才引入的。
    • 是的,你可以使用它,在android中所有新版本都支持它的旧版本,所以只需使用API​​ 8制作一个应用程序。还要查看android应用程序的兼容模式如何支持它到旧版本。我认为您必须在清单文件中提到 minSDKVersion 标记。
    【解决方案2】:
    final Uri uri = ContactsContract.Contacts.CONTENT_URI;
        final String[] projection = new String[] {
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.Contacts.PHOTO_URI
        };
        //boolean mShowInvisible = false;
        String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
        String[] selectionArgs = null;
        final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    
        m_curContacts = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
        String[] fields = new String[] {ContactsContract.Data.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_URI};
        myadapter= new MySimpleCursorAdapter(this, R.layout.list_search, m_curContacts, fields, new int []{R.id.textView1,R.id.imageView1});
    

    请尝试此代码可能对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多