2016-01-29 3 views
0

Мне нужно, чтобы автоматически добавить контакт в телефонной книге, мое приложение .... Я нашел эту ссылку ..добавление контактов автоматически в телефонной книге в Android App

How to add new contacts in android

с помощью этого, я могу добавить номер телефона, имя, адрес электронной почты и т. д. Но не знаю, как добавить фотографию.

+0

Я попытался с помощью этого ... ImageView IMG = новый ImageView (это); img.setImageResource ((R.drawable.ic_launcher)); ops.add (ContentProviderOperation.newInsert (ContactsContract.Data.CONTENT_URI) .withValueBackReference (ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) .withValue (ContactsContract.CommonDataKinds.Photo .PHOTO, img) .withValue (ContactsContract.CommonDataKinds.Photo.PHOTO, img) .build()); но не работает – akg

+0

конвертировать его в растровое изображение –

ответ

0

Сначала конвертируйте свое изображение в растровое изображение, а затем используйте нижеприведенный код для добавления фотографии к вашему контакту.

OnClickListener addClickListener = new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       // Getting reference to Name EditText 
       EditText etName = (EditText) findViewById(R.id.et_name); 

       // Getting reference to Mobile EditText 
       EditText etMobile = (EditText) findViewById(R.id.et_mobile); 

       ArrayList<ContentProviderOperation> ops = 
         new ArrayList<ContentProviderOperation>(); 

       int rawContactID = ops.size(); 

       // Adding insert operation to operations list 
       // to insert a new raw contact in the table ContactsContract.RawContacts 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
         .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
         .withValue(RawContacts.ACCOUNT_NAME, null) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert display name in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
         .withValue(StructuredName.DISPLAY_NAME, etName.getText().toString()) 
         .build()); 

       // Adding insert operation to operations list 
       // to insert Mobile Number in the table ContactsContract.Data 
       ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
         .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
         .withValue(ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) 
         .withValue(Phone.NUMBER, etMobile.getText().toString()) 
         .withValue(Phone.TYPE, CommonDataKinds.Phone.TYPE_MOBILE) 
         .build()); 

       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       if(mBitmap!=null){ // If an image is selected successfully 
        mBitmap.compress(Bitmap.CompressFormat.PNG , 75, stream); 

        // Adding insert operation to operations list 
        // to insert Photo in the table ContactsContract.Data 
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
          .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID) 
          .withValue(ContactsContract.Data.IS_SUPER_PRIMARY, 1) 
          .withValue(ContactsContract.Data.MIMETYPE,Photo.CONTENT_ITEM_TYPE) 
          .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO,stream.toByteArray()) 
          .build()); 

        try { 
         stream.flush(); 
        }catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
       try{ 
        // Executing all the insert operations as a single database transaction 
        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
        Toast.makeText(getBaseContext(), "Contact is successfully added", Toast.LENGTH_SHORT).show(); 
       }catch (RemoteException e) { 
        e.printStackTrace(); 
       }catch (OperationApplicationException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 

Для получения более подробной информации, пожалуйста, смотрите ссылку ниже http://wptrafficanalyzer.in/blog/programatically-adding-contacts-with-photo-using-contacts-provider-in-android-example/

+0

thanx anjali ... я решил свою проблему .. (y) – akg

+0

в чем проблема? –

0

Используйте следующий код этого фотографирует, как photoByteArray для метода

private void addContact2() { 
final String displayName = "XYZA"; 
final String mobileNumber = "666666"; 
final byte[] photoByteArray; // initalized elsewhere 

ArrayList<ContentProviderOperation> ops = new ArrayList<>(); 

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "") 
    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "") 
    .build()); 

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValue(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName) 
    //.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, displayName) 
    .build()); 

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Photo.PHOTO, photoByteArray) 
    .build()); 

Uri newContactUri = null; 
ContentProviderResult[] res = null; 
try { 
final ContentResolver contentResolver = getContentResolver(); 
res = contentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 
if (res != null && res.length > 0 && res[0] != null) { 
    newContactUri = res[0].uri; 
    Log.d(CallActivity.class.getName(), "URI added contact:"+ newContactUri); 
    Toast.makeText(this, "Successfully added " + displayName, Toast.LENGTH_LONG).show(); 
} 
else Log.e(CallActivity.class.getName(), "Contact not added."); 
} catch (NullPointerException | RemoteException | OperationApplicationException e) { 
Log.e(CallActivity.class.getName(), e.getMessage(), e); 
} 
} 
Смежные вопросы