Search This Blog

Thursday, 23 June 2011

Add Email Address from Contact Picker

1). Add permission in to the Menifest.xml
              <uses-permission android:name="android.permission.READ_CONTACTS"/>

2). Pass Intent in on click method

    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
   startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);

3). Add method onActivityResult()



          @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
       if (resultCode == RESULT_OK)
       {
           switch (requestCode)
           {
             case CONTACT_PICKER_RESULT:
               Cursor cursor = null;
               String email = "";
               try
               {
                   Bundle extras = data.getExtras();
                   Set<String> keys = extras.keySet();
                   Iterator<String> iterate = keys.iterator();
                   while (iterate.hasNext())
                   {
                       String key = iterate.next();
                       Log.v(DEBUG_TAG, key + "[" + extras.get(key) + "]");
                   }

                   Uri result = data.getData();
                   Log.v(DEBUG_TAG, "Got a contact result: "
                           + result.toString());

                   // get the contact id from the Uri
                   String id = result.getLastPathSegment();

                   // query for everything email
                   cursor = getContentResolver().query(Email.CONTENT_URI,
                           null, Email.CONTACT_ID + "=?", new String[] { id },
                           null);

                   int emailIdx = cursor.getColumnIndex(Email.DATA);

                   // let's just get the first email
                   if (cursor.moveToFirst()) {

                       /*
                        * Iterate all columns. :) String columns[] =
                        * cursor.getColumnNames(); for (String column :
                        * columns) { int index = cursor.getColumnIndex(column);
                        * Log.v(DEBUG_TAG, "Column: " + column + " == [" +
                        * cursor.getString(index) + "]"); }
                        */

                       email = cursor.getString(emailIdx);

                       Log.v(DEBUG_TAG, "Got email: " + email);

                   } else {
                       Log.w(DEBUG_TAG, "No results");
                   }
               }
               catch (Exception e)
               {
                  Log.e(DEBUG_TAG, "Failed to get email data", e);
               }
               finally
               {
                   if (cursor != null)
                   {
                       cursor.close();
                   }
                 
                   if (email.length() == 0) {
                       Toast.makeText(this, "No email found for contact.",
                               Toast.LENGTH_LONG).show();
                   }
                   else
                   {
                    Global.dbMain.execNonQuery("insert into EmailContacts(email) values('"+ email +"')");
System.out.println("Insert Successfully from contacts");
Intent intent = new Intent(SettingsActivity_Email.this,SettingsActivity_Email.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
                   }

               }

               break;
           }

       } else {
           Log.w(DEBUG_TAG, "Warning: activity result not ok");
       }
   }

Add Contact from Contact Picker

1). Add permission in to the Menifest.xml
              <uses-permission android:name="android.permission.READ_CONTACTS"/>

2). Pass Intent in on click method

    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
   startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);

3). Add method onActivityResult()

   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (resultCode == RESULT_OK) {
       switch (requestCode) {
       case CONTACT_PICKER_RESULT:
//            final EditText phoneInput = (EditText) findViewById(R.id.phoneNumberInput);
           Cursor cursor = null;
           String phoneNumber = "";
           List<String> allNumbers = new ArrayList<String>();
           int phoneIdx = 0;
           try {
               Uri result = data.getData();
               String id = result.getLastPathSegment();
               cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);
               phoneIdx = cursor.getColumnIndex(Phone.DATA);
               if (cursor.moveToFirst()) {
                   while (cursor.isAfterLast() == false) {
                       phoneNumber = cursor.getString(phoneIdx);
                       allNumbers.add(phoneNumber);
                       cursor.moveToNext();
                   }
               } else {
                   //no results actions
               }
           } catch (Exception e) {
              //error actions
           } finally {
               if (cursor != null) {
                   cursor.close();
               }

               final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
               AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity_SMS.this);
               builder.setTitle("Choose a number");
               builder.setItems(items, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int item) {
                       String selectedNumber = items[item].toString();
                       selectedNumber = selectedNumber.replace("-", "");
                       phoneInput.setText(selectedNumber);
                      
                   }
               });
               AlertDialog alert = builder.create();
               if(allNumbers.size() > 1) {
                   alert.show();
               } else {
                   String selectedNumber = phoneNumber.toString();
                   selectedNumber = selectedNumber.replace("-", "");
                   phoneInput.setText(selectedNumber);
                 
                 
               }

               if (phoneNumber.length() == 0) {
                   //no numbers found actions
               }
           }
           break;
       }
   } else {
      //activity result error actions
   }
}