在插入的Andr​​oid 2.3.5多个联系人多个、联系人、Andr、oid

2023-09-06 15:50:12 作者:叫自己放手

我想从我的应用程序添加多个联系人。我在数据从XML文件中读取,然后这个包装成强类型对象的列表。这些对象,然后通过循环和我打电话插入到为每一位用户的联系人。

不过我得到了一些非常奇怪的结果,而测试的地方我得到1个或两个工作接触,然后一些空(未知)条目。在出现(未知)成功条目数是随机的,但我很茫然,为什么我不能执行的东西,应该是相当简单的事情。

该启动命令来获取数据,然后将其添加到联系人我的单击事件如下。我可以证实,该数据被读入的联系方式,每次列出,所以它不是与数据的一个问题。

 公共无效的onClick(视图v){    清单< AddressContent>接触= GetAddresses();    INT计数器= 0;    如果(!contacts.isEmpty()){        ArrayList的< ContentProviderOperation> OPS =新的ArrayList< ContentProviderOperation>();        的for(int i = 0; I< contacts.size();我++){            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.RawContacts.CONTENT_URI)                    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,                            空值)                    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME,                            空值)                    .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,                            ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());            // ------------------------------------------------ -  -  -  名称            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)                    .withValue(                            ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,                            contacts.get(我).getName())建立());            // ------------------------------------------------ ------工作            //号码            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)                    .withValue(                            ContactsContract.CommonDataKinds.Phone.NUMBER,                            contacts.get(ⅰ).getPhone())                    .withValue(                            ContactsContract.CommonDataKinds.Phone.TYPE,                            ContactsContract.CommonDataKinds.Phone.TYPE_WORK)                    。建立());            // ------------------------------------------------ ------传真            //号码            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)                    .withValue(                            ContactsContract.CommonDataKinds.Phone.NUMBER,                            contacts.get(ⅰ).getFax())                    .withValue(                            ContactsContract.CommonDataKinds.Phone.TYPE,                            ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK)                    。建立());            // ------------------------------------------------ ------电子邮件            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)                    .withValue(ContactsContract.CommonDataKinds.Email.DATA,                            contacts.get(ⅰ).getEmail())                    .withValue(                            ContactsContract.CommonDataKinds.Email.TYPE,                            ContactsContract.CommonDataKinds.Email.TYPE_WORK)                    。建立());            // ------------------------------------------------ ------            //组织            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)                    .withValue(                            ContactsContract.CommonDataKinds.Organization.COMPANY,                            contacts.get(ⅰ).getCompany())                    .withValue(                            ContactsContract.CommonDataKinds.Organization.TYPE,                            ContactsContract.CommonDataKinds.Organization.TYPE_WORK)                    。建立());            // ------------------------------------------------ ------            // 地址            ops.add(ContentProviderOperation                    .newInsert(ContactsContract.Data.CONTENT_URI)                    .withValueBackReference(                            ContactsContract.Data.RAW_CONTACT_ID,I)                    .withValue(                            ContactsContract.Data.MIMETYPE,                            ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)                    .withValue(                            ContactsContract.CommonDataKinds.StructuredPostal.STREET,                            contacts.get(ⅰ).getStreet())                    .withValue(                            ContactsContract.CommonDataKinds.StructuredPostal.CITY,                            contacts.get(ⅰ).getCity())                    .withValue(                            ContactsContract.CommonDataKinds.StructuredPostal.POST code,                            contacts.get(我).getPost code())                    .withValue(                            ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY,                            contacts.get(ⅰ).getCountry())                    .withValue(                            ContactsContract.CommonDataKinds.StructuredPostal.TYPE,                            ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)                    。建立());            反++;        }        尝试{            getContentResolver()。applyBatch(ContactsContract.AUTHORITY,                    OPS);        }赶上(例外五){            e.printStackTrace();            Toast.makeText(这一点,错误添加联系人,Toast.LENGTH_SHORT).show();            计数器 - ;        }        如果(计数器大于0){            如果(计数器→1){                Toast.makeText(这一点,通讯录中添加,Toast.LENGTH_SHORT).show();            }其他{                Toast.makeText(这一点,添加联系人,Toast.LENGTH_SHORT).show();            }        }    }    如果(反== 0){        Toast.makeText(这一点,无法添加联系人,Toast.LENGTH_SHORT).show();    }} 

解决方案

很多乱搞我发现,我需要循环,然后每一次火灾之后。我不能简单地建立了ArrayList和火一旦如上。下面code工作:

 公共无效的onClick(视图v){清单< AddressContent>接触= GetAddresses();INT计数器= 0;如果(!contacts.isEmpty()){    的for(int i = 0; I< contacts.size();我++){ArrayList的< ContentProviderOperation> OPS =新的ArrayList< ContentProviderOperation>();        ops.add(ContentProviderOperation                .newInsert(ContactsContract.RawContacts.CONTENT_URI)                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,                        空值)                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME,                        空值)                .withValue(ContactsContract.RawContacts.AGGREGATION_MODE,                        ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());        // ------------------------------------------------ -  -  -  名称        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)                .withValue(                        ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,                        contacts.get(我).getName())建立());        // ------------------------------------------------ ------工作        //号码        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)                .withValue(                        ContactsContract.CommonDataKinds.Phone.NUMBER,                        contacts.get(ⅰ).getPhone())                .withValue(                        ContactsContract.CommonDataKinds.Phone.TYPE,                        ContactsContract.CommonDataKinds.Phone.TYPE_WORK)                。建立());        // ------------------------------------------------ ------传真        //号码        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)                .withValue(                        ContactsContract.CommonDataKinds.Phone.NUMBER,                        contacts.get(ⅰ).getFax())                .withValue(                        ContactsContract.CommonDataKinds.Phone.TYPE,                        ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK)                。建立());        // ------------------------------------------------ ------电子邮件        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)                .withValue(ContactsContract.CommonDataKinds.Email.DATA,                        contacts.get(ⅰ).getEmail())                .withValue(                        ContactsContract.CommonDataKinds.Email.TYPE,                        ContactsContract.CommonDataKinds.Email.TYPE_WORK)                。建立());        // ------------------------------------------------ ------        //组织        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)                .withValue(                        ContactsContract.CommonDataKinds.Organization.COMPANY,                        contacts.get(ⅰ).getCompany())                .withValue(                        ContactsContract.CommonDataKinds.Organization.TYPE,                        ContactsContract.CommonDataKinds.Organization.TYPE_WORK)                。建立());        // ------------------------------------------------ ------        // 地址        ops.add(ContentProviderOperation                .newInsert(ContactsContract.Data.CONTENT_URI)                .withValueBackReference(                        ContactsContract.Data.RAW_CONTACT_ID,I)                .withValue(                        ContactsContract.Data.MIMETYPE,                        ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)                .withValue(                        ContactsContract.CommonDataKinds.StructuredPostal.STREET,                        contacts.get(ⅰ).getStreet())                .withValue(                        ContactsContract.CommonDataKinds.StructuredPostal.CITY,                        contacts.get(ⅰ).getCity())                .withValue(                        ContactsContract.CommonDataKinds.StructuredPostal.POST code,                        contacts.get(我).getPost code())                .withValue(                        ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY,                        contacts.get(ⅰ).getCountry())                .withValue(                        ContactsContract.CommonDataKinds.StructuredPostal.TYPE,                        ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)                。建立());    尝试{        getContentResolver()。applyBatch(ContactsContract.AUTHORITY,                OPS);反++;    }赶上(例外五){        e.printStackTrace();        Toast.makeText(这一点,错误添加联系人,Toast.LENGTH_SHORT).show();        计数器 - ;    }    }    如果(计数器大于0){        如果(计数器→1){            Toast.makeText(这一点,通讯录中添加,Toast.LENGTH_SHORT).show();        }其他{            Toast.makeText(这一点,添加联系人,Toast.LENGTH_SHORT).show();        }    }}如果(反== 0){    Toast.makeText(这一点,无法添加联系人,Toast.LENGTH_SHORT).show();} 

}

I am trying to add multiple contacts from my application. I am reading in data from an xml file and then wrapping this up into a list of strongly typed objects. These objects and then looped through and I am calling an insert into the users contacts for each one.

However I am getting some very bizarre results whilst testing where I am getting either 1 or two working contacts and then a number of empty (Unknown) entries. The number of successful entries over (Unknowns) appears to be random but I am at a loss as to why I cannot perform something that should be fairly simple to do.

My click event which initiates the command to fetch the data and then add it to the contacts is below. I can confirm that the data is being read into the contacts list each time so it is not a problem with the data.

public void onClick(View v) {
    List<AddressContent> contacts = GetAddresses();     
    int counter = 0;        

    if (!contacts.isEmpty()) {                  
        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

        for (int i = 0; i < contacts.size(); i++) {             

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

            // ------------------------------------------------------ Name

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                            contacts.get(i).getName()).build());

            // ------------------------------------------------------ Work
            // Number

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                    .withValue(
                            ContactsContract.CommonDataKinds.Phone.NUMBER,
                            contacts.get(i).getPhone())
                    .withValue(
                            ContactsContract.CommonDataKinds.Phone.TYPE,
                            ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
                    .build());

            // ------------------------------------------------------ Fax
            // Number

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                    .withValue(
                            ContactsContract.CommonDataKinds.Phone.NUMBER,
                            contacts.get(i).getFax())
                    .withValue(
                            ContactsContract.CommonDataKinds.Phone.TYPE,
                            ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK)
                    .build());

            // ------------------------------------------------------ Email

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.Email.DATA,
                            contacts.get(i).getEmail())
                    .withValue(
                            ContactsContract.CommonDataKinds.Email.TYPE,
                            ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                    .build());

            // ------------------------------------------------------
            // Organisation

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
                    .withValue(
                            ContactsContract.CommonDataKinds.Organization.COMPANY,
                            contacts.get(i).getCompany())
                    .withValue(
                            ContactsContract.CommonDataKinds.Organization.TYPE,
                            ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                    .build());

            // ------------------------------------------------------
            // Address              

            ops.add(ContentProviderOperation
                    .newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValueBackReference(
                            ContactsContract.Data.RAW_CONTACT_ID, i)
                    .withValue(
                            ContactsContract.Data.MIMETYPE,
                            ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredPostal.STREET, 
                            contacts.get(i).getStreet())
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredPostal.CITY, 
                            contacts.get(i).getCity())
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, 
                            contacts.get(i).getPostcode())
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, 
                            contacts.get(i).getCountry())
                    .withValue(
                            ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
                            ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)
                    .build());
            counter++;
        }

        try {
            getContentResolver().applyBatch(ContactsContract.AUTHORITY,
                    ops);
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, "Error adding contact", Toast.LENGTH_SHORT).show();
            counter--;
        }

        if (counter > 0) {
            if (counter > 1) {
                Toast.makeText(this, "Contacts added", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Contact added", Toast.LENGTH_SHORT).show();
            }
        }
    }

    if (counter == 0) {
        Toast.makeText(this, "Unable to add contact", Toast.LENGTH_SHORT).show();
    }
}

解决方案

After much messing around I have found that I need to loop then fire each time. I cannot simply build up the arraylist and fire once as above. The following code works:

public void onClick(View v) {
List<AddressContent> contacts = GetAddresses();     
int counter = 0;        

if (!contacts.isEmpty()) {                  


    for (int i = 0; i < contacts.size(); i++) {             
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,
                        null)
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME,
                        null)
                .withValue(ContactsContract.RawContacts.AGGREGATION_MODE, 
                        ContactsContract.RawContacts.AGGREGATION_MODE_DISABLED).build());

        // ------------------------------------------------------ Name

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                        contacts.get(i).getName()).build());

        // ------------------------------------------------------ Work
        // Number

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                .withValue(
                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                        contacts.get(i).getPhone())
                .withValue(
                        ContactsContract.CommonDataKinds.Phone.TYPE,
                        ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
                .build());

        // ------------------------------------------------------ Fax
        // Number

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                .withValue(
                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                        contacts.get(i).getFax())
                .withValue(
                        ContactsContract.CommonDataKinds.Phone.TYPE,
                        ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK)
                .build());

        // ------------------------------------------------------ Email

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                .withValue(ContactsContract.CommonDataKinds.Email.DATA,
                        contacts.get(i).getEmail())
                .withValue(
                        ContactsContract.CommonDataKinds.Email.TYPE,
                        ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                .build());

        // ------------------------------------------------------
        // Organisation

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
                .withValue(
                        ContactsContract.CommonDataKinds.Organization.COMPANY,
                        contacts.get(i).getCompany())
                .withValue(
                        ContactsContract.CommonDataKinds.Organization.TYPE,
                        ContactsContract.CommonDataKinds.Organization.TYPE_WORK)
                .build());

        // ------------------------------------------------------
        // Address              

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI)
                .withValueBackReference(
                        ContactsContract.Data.RAW_CONTACT_ID, i)
                .withValue(
                        ContactsContract.Data.MIMETYPE,
                        ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredPostal.STREET, 
                        contacts.get(i).getStreet())
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredPostal.CITY, 
                        contacts.get(i).getCity())
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, 
                        contacts.get(i).getPostcode())
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, 
                        contacts.get(i).getCountry())
                .withValue(
                        ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
                        ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)
                .build());

    try {
        getContentResolver().applyBatch(ContactsContract.AUTHORITY,
                ops);
counter++;
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "Error adding contact", Toast.LENGTH_SHORT).show();
        counter--;
    }
    }



    if (counter > 0) {
        if (counter > 1) {
            Toast.makeText(this, "Contacts added", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "Contact added", Toast.LENGTH_SHORT).show();
        }
    }
}

if (counter == 0) {
    Toast.makeText(this, "Unable to add contact", Toast.LENGTH_SHORT).show();
}

}