Skip to content Skip to sidebar Skip to footer

Android Fetch Contact Information Returns Null Pointer Exception

In my android code I want to fetch contact's name,email and phone number as as json and then want to display. Here is my code: public class MainActivity extends Activity { pub

Solution 1:

You can use these approach to finds the contact from contact list

classFetchDeviceContactextendsAsyncTask<Void, Integer, String>
    {
        protectedvoidonPreExecute(){
            Constant.showProgressDialog(AddDeviceContactScreeen.this);
        }

        protected String doInBackground(Void...arg0) {


            arrayList.clear();


            ContentResolvercr= AddDeviceContactScreeen.this.getContentResolver();
            Cursorcur= AddDeviceContactScreeen.this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

            while (cur.moveToNext()) {


                Stringid= cur.getString(cur.getColumnIndex(ContactsContract.Data._ID));

                Stringname= cur.getString(cur.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));

                StringphotoUri= cur.getString(cur.getColumnIndex(ContactsContract.Data.PHOTO_THUMBNAIL_URI));

                Bitmapmy_btmp= BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_up_blue);


                Stringemail=null;
                StringphoneNo=null;

                Cursorphonecur= AddDeviceContactScreeen.this.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        newString[]{id}, null);


                if (photoUri != null) {
                    Urimy_contact_Uri= Uri.parse(photoUri);
                    try {

                        my_btmp = MediaStore.Images.Media.getBitmap(AddDeviceContactScreeen.this.getContentResolver(), my_contact_Uri);


                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }


                if (phonecur.getCount() > 0) {


                    while (phonecur.moveToNext()) {


                        phoneNo = phonecur.getString(phonecur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));


                    }


                }

                CursoremailCur= cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
                        newString[]{id}, null);

                while (emailCur.moveToNext()) {
                    // to get the contact names//                = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)
                    email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));


                    if (email != null) {


                        System.out.println("Email============== :" + email);

                    }

                }
                emailCur.close();

                ContactBeanbean=newContactBean();

                bean.setName(name);
                bean.setEmail(email);
                bean.setImage(my_btmp);
                bean.setPhone_number(phoneNo);

                if (phoneNo == null || email == null) {

                } else {

                    arrayList.add(bean);
                }

            }

            return"";
        }

        protectedvoidonProgressUpdate(Integer...a){

        }

        protectedvoidonPostExecute(String result) {


            Constant.cancelDialog();



        }
    }


 newFetchDeviceContact().execute();

Create the getter and setter class for it:-

publicclassContactBean {

    String name;
    String email;
    Bitmap image;
    String phone_number;

    publicStringgetName() {
        return name;
    }

    publicvoidsetName(String name) {
        this.name = name;
    }

    publicStringgetEmail() {
        return email;
    }

    publicvoidsetEmail(String email) {
        this.email = email;
    }

    publicBitmapgetImage() {
        return image;
    }

    publicvoidsetImage(Bitmap image) {
        this.image = image;
    }

    publicStringgetPhone_number() {
        return phone_number;
    }

    publicvoidsetPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }

}

Solution 2:

I think you should fix :

if (phoneCursor.movetoFirst()){
    while (!phoneCursor.isAfterLast()) {
        phoneNumber[p] = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
        p++;
        phoneCursor.movetoNext();
    }
}

Solution 3:

Here:

phoneNumber[p] = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));

NullPointerException caused because phoneNumber is null and not initialized.

Use Cursor. getCount() to initialize it as:

phoneNumber = newString[phoneCursor.getCount()];
phoneCursor.moveToFirst();
while (phoneCursor.moveToNext()) {
   //..your code here..              
 }

Post a Comment for "Android Fetch Contact Information Returns Null Pointer Exception"