I`m currently developing an android application which is intend to call a user based on the user voice input. That is when user says a name (i.e "John"). i want to retrieve all the contacts from my contact list which contains that name with their contact number (i.e "John Mavel - +94715295296,John Cena - +94715295286, Marine Jone - +94715294568, Josh John Samuwel - +94715297895. etc"). And if there is only one contact with that name i want to make a call directly without giving any suggestions. By now i have implemented a code to make a call for a given hard coded name. and it takes a voice input.

```
            package com.chamika_kasun.voicerecognitionapp;

            import java.util.ArrayList;
            import java.util.List;
            //import java.util.List;

            import android.net.Uri;
            import android.os.Bundle;
            import android.provider.ContactsContract;
            import android.provider.ContactsContract.CommonDataKinds.Phone;
            import android.app.Activity;
            import android.content.ContentResolver;
            import android.content.Intent;
            import android.content.pm.PackageManager;
            import android.database.Cursor;
            //import android.content.pm.PackageManager;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.widget.ArrayAdapter;
            import android.widget.Button;
            import android.widget.ListView;
            import android.widget.Toast;
            import android.speech.RecognizerIntent;
            import android.content.pm.ResolveInfo;

            public class MakeCall extends Activity implements OnClickListener {

                public ListView mList;
                public Button speakButton;

                public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;

                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.make_call);

                    speakButton = (Button) findViewById(R.id.btn_speak);
                    speakButton.setOnClickListener(this);

                    voiceinputbuttons();

                    // Check to see if a recognition activity is present
                    // if running on AVD virtual device it will give this message. The mic
                    // required only works on an actual android device
                      // Disable button if no recognition service is present
                    PackageManager pm = getPackageManager();
                    List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
                    if (activities.size() == 0)
                    {
                        speakButton.setEnabled(false);
                        speakButton.setText("Recognizer not present");
                    }

                }

                public void voiceinputbuttons() {
                    speakButton = (Button) findViewById(R.id.btn_speak);
                    mList = (ListView) findViewById(R.id.list);
                }

                public void startVoiceRecognitionActivity() {

                    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                    intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Speech recognition demo");
                    startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);

                }

                public void onClick(View v) {

                    startVoiceRecognitionActivity();

                }

                @Override
                public void onActivityResult(int requestCode, int resultCode, Intent data) {
                    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
                        // Fill the list view with the strings the recognizer thought it
                        // could have heard
                        ArrayList matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                        mList.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1, matches));

                        //if (matches.contains("vidudaya")) {

                            String name = matches.toString();
                            String number = "";

                            Toast.makeText(this, "Name : "+name,Toast.LENGTH_SHORT).show();

                            ContentResolver cr = getContentResolver();
                            Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,"DISPLAY_NAME = '" + name + "'", null, null);
                            if (cursor.moveToFirst()) {
                                String contactId =
                                    cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                                //
                                //  Get all phone numbers.
                                //
                                Cursor phones = cr.query(Phone.CONTENT_URI, null,
                                    Phone.CONTACT_ID + " = " + contactId, null, null);
                                while (phones.moveToNext()) {
                                   number = phones.getString(phones.getColumnIndex(Phone.NUMBER));
            //                      int type = phones.getInt(phones.getColumnIndex(Phone.TYPE));
            //                      switch (type) {
            //                          case Phone.TYPE_HOME:
            //                              // do something with the Home number here...
            //                              break;
            //                          case Phone.TYPE_MOBILE:
            //                              // do something with the Mobile number here...
            //                              break;
            //                          case Phone.TYPE_WORK:
            //                              // do something with the Work number here...
            //                              break;
            //                          }

                                    Toast.makeText(this, "My Mobile Number : "+number,Toast.LENGTH_SHORT).show();

                                }
                                phones.close();
                               }
                               cursor.close();

                                String url = "tel:"+number;
                                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
                                startActivity(intent);

                        //}

                        super.onActivityResult(requestCode, resultCode, data);
                    }
                }

            }

```