0

I'm displaying all contact list,I have used AsyncTask for that I wanna show Progress Update dialog so user can understand how much completion time left.I have following code for that but not getting clear,How to show progressUpdate dialog.

Code

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    Cursor cur;
    ContentResolver cr;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cr = getContentResolver();
        cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,
                null);
        GetContact contact = new GetContact();
        contact.execute(cur);
    }

    class GetContact extends AsyncTask<Cursor, Void, Void> {
        private ProgressDialog progress;

        @Override
        protected Void doInBackground(Cursor... params) {
            // TODO Auto-generated method stub
            System.out.println("value of param==================="
                    + params.length);
            readContacts();
            return null;
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            progress = ProgressDialog
                    .show(MainActivity.this, "", "Loding.....");
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            progress.dismiss();
        }

    }

    public void readContacts() {
        // ContentResolver cr = getContentResolver();
        // Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
        // null, null, null);
        System.out.println("value of cursor=================================="
                + cur.getCount());
        if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                String id = cur.getString(cur
                        .getColumnIndex(ContactsContract.Contacts._ID));
                String name = cur
                        .getString(cur
                                .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer
                        .parseInt(cur.getString(cur
                                .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    System.out
                            .println("name : ==================================="
                                    + name + ", ID : " + id);

                    // get the phone number
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id }, null);
                    while (pCur.moveToNext()) {
                        String phone = pCur
                                .getString(pCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        System.out
                                .println("phone++++++++++++++++++++++++++++++++++"
                                        + phone);
                    }
                    pCur.close();

                    // get email and type

                    Cursor emailCur = cr.query(
                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = ?", new String[] { id }, null);
                    while (emailCur.moveToNext()) {
                        // This would allow you get several email addresses
                        // if the email addresses were stored in an array
                        String email = emailCur
                                .getString(emailCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                        String emailType = emailCur
                                .getString(emailCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));

                        System.out.println("Email " + email + " Email Type : "
                                + emailType);
                    }
                    emailCur.close();

                    // Get note.......
                    String noteWhere = ContactsContract.Data.CONTACT_ID
                            + " = ? AND " + ContactsContract.Data.MIMETYPE
                            + " = ?";
                    String[] noteWhereParams = new String[] {
                            id,
                            ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE };
                    Cursor noteCur = cr.query(
                            ContactsContract.Data.CONTENT_URI, null, noteWhere,
                            noteWhereParams, null);
                    if (noteCur.moveToFirst()) {
                        String note = noteCur
                                .getString(noteCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
                        System.out.println("Note " + note);
                    }
                    noteCur.close();

                    // Get Postal Address....

                    String addrWhere = ContactsContract.Data.CONTACT_ID
                            + " = ? AND " + ContactsContract.Data.MIMETYPE
                            + " = ?";
                    String[] addrWhereParams = new String[] {
                            id,
                            ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE };
                    Cursor addrCur = cr.query(
                            ContactsContract.Data.CONTENT_URI, null, null,
                            null, null);
                    while (addrCur.moveToNext()) {
                        String poBox = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX));
                        String street = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
                        String city = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
                        String state = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));
                        String postalCode = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
                        String country = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
                        String type = addrCur
                                .getString(addrCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));

                        // Do something with these....

                    }
                    addrCur.close();

                    // Get Instant Messenger.........
                    String imWhere = ContactsContract.Data.CONTACT_ID
                            + " = ? AND " + ContactsContract.Data.MIMETYPE
                            + " = ?";
                    String[] imWhereParams = new String[] {
                            id,
                            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE };
                    Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI,
                            null, imWhere, imWhereParams, null);
                    if (imCur.moveToFirst()) {
                        String imName = imCur
                                .getString(imCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));
                        String imType;
                        imType = imCur
                                .getString(imCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE));
                    }
                    imCur.close();

                    // Get Organizations.........

                    String orgWhere = ContactsContract.Data.CONTACT_ID
                            + " = ? AND " + ContactsContract.Data.MIMETYPE
                            + " = ?";
                    String[] orgWhereParams = new String[] {
                            id,
                            ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE };
                    Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI,
                            null, orgWhere, orgWhereParams, null);
                    if (orgCur.moveToFirst()) {
                        String orgName = orgCur
                                .getString(orgCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
                        String title = orgCur
                                .getString(orgCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
                    }
                    orgCur.close();
                }
            }
        }
    }

}
Dilip
  • 2,271
  • 5
  • 32
  • 52

1 Answers1

0

1) You have to override onProgressUpdate() of AsyncTask. There you can update your progresDialog.

2) Move readContacts() into GetContact class

3) You have to call publishProgress() somewhere in your readContacts() loop to notify that progress was updated and onProgressUpdate() will be called.

traninho
  • 1,533
  • 12
  • 19
  • Already calling readContact inside doInbackground() and i know that all process but problem is that how to implement in my code can u suggest in this regard – Dilip Apr 23 '13 at 08:21