Search code examples
androidandroid-edittextandroid-contactsonactivityresultstartactivityforresult

ContactPicker not setting in edittext


I am implementing contactPicker in android

i have created a imagebutton and onClick of that button i start activityforresult to get the single contact phonenumber in edit text

but the problem is data is always null .

here is my code

public static final int PICK_CONTACT = 1;

ImageButton contactsButton = (ImageButton) findViewById(R.id.contacts_button);
        contactsButton.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {

             Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
             startActivityForResult(intent,PICK_CONTACT);

        }
    });

here is activityforresult

@Override
   public void onActivityResult(int reqCode, int resultCode, Intent data) {
      super.onActivityResult(reqCode, resultCode, data);
      switch (reqCode) {

        case (PICK_CONTACT):


             Log.d(" data",  data+""); //returning null


        Log.d("resultCode", resultCode+""); //returning 0

        Log.d("reqCode", reqCode+""); //returning 1

        Log.d("Activity2.RESULT_OK", Activity2.RESULT_OK+"");//returning -1

            if (resultCode == Activity2.RESULT_OK) {



             Uri contactData = data.getData();
              Cursor c = getContentResolver().query(contactData, null, null, null, null);
              if (c.moveToFirst()) {
                String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                String hasNumber = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
                String num = "";
                if (Integer.valueOf(hasNumber) == 1) {
                   Cursor numbers = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
                   while (numbers.moveToNext()) {

                       num = numbers.getString(numbers.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                      Toast.makeText(xxx.this, "Number="+num, Toast.LENGTH_LONG).show();

                    ed= (EditText)findViewById(R.id.txtoooo);
                    ed.setText(num);



                   }
                }
             }

              break;

           }
      }
   }

all i want to do is select a contact and load its phone number to EditText . please help me i tried all the solution available on internet.. where i am making a mistake ?


Solution

  • I solved this problem

    in my androidManifest.xml file where the activity was declared i simply removed unrequited stuff . and now its working fine .

    changed from:

     <activity 
            android:name="xxx.aaa.bbb" 
            android:label="@string/app_name" 
            android:launchMode="singleInstance"
            android:configChanges="orientation|keyboardHidden"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    

    TO:

     <activity 
            android:name="xxx.aaa.bbb" 
            android:label="@string/app_name">
    
     </activity>
    

    now i can get the result from intent. anyone may can get help from this . Thank You..