voz volver teléfono por para internet instalar google español descargar controlar con comando aplicación aplicaciones android android-contacts

android - volver - ok google



Elija un número y nombre de la lista de contactos en la aplicación de Android (12)

Agregue un permiso para leer datos de contactos a su manifiesto de aplicación.

<uses-permission android:name="android.permission.READ_CONTACTS"/>

Use Intent.Action_Pick en su actividad como a continuación

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT);

A continuación, anule el onActivityResult()

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // check whether the result is ok if (resultCode == RESULT_OK) { // Check for the request code, we might be usign multiple startActivityForReslut switch (requestCode) { case RESULT_PICK_CONTACT: Cursor cursor = null; try { String phoneNo = null ; String name = null; Uri uri = data.getData(); cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToFirst(); int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); phoneNo = cursor.getString(phoneIndex); textView2.setText(phoneNo); } catch (Exception e) { e.printStackTrace(); } break; } } else { Log.e("MainActivity", "Failed to pick contact"); } }

Esto funcionará echale un vistazo

Quiero elegir un contacto con su número de mi lista de contactos. Leí muchas soluciones e investigaciones durante un par de semanas, pero todos los artículos no funcionaron correctamente. Algunos códigos como los siguientes:

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

// y en actividadresultado:

if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null); if (c.moveToFirst()) { String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); tv1.setText(name); } }

o este código para obtener todos los contactos pero no puedo tener el número de contactos:

String[] contacts = new String[] {People.NAME, People.NUMBER}; Uri contentUri = People.CONTENT_URI; Cursor cursor = managedQuery(contentUri, contacts, null, null, null); String textContacts = ""; if (cursor.moveToFirst()) { String myname = null; String mynumber = null; do { textContacts = textContacts + cursor.getString(cursor.getColumnIndex(People.NAME)) + " : " + cursor.getString(cursor.getColumnIndex(People.NUMBER)) + "/n"; } while (cursor.moveToNext()); tv1.setText(textContacts); }

¿Alguien puede ayudarme, por favor? mi android es 2.3.3


Este código funcionará para contactos de número de teléfono móvil, no para correo electrónico o algo así. Encontré este código más simple. Déjame saber si hay algún problema.

iniciar la actividad con la intención de elegir el tipo de datos del teléfono:

findViewById(R.id.choose_contact_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent pickContact = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(pickContact, PICK_CONTACT_REQUEST); } });

Ahora establece onAcitivityResult ();

@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent){ switch (requestCode){ case PICK_CONTACT_REQUEST: if (resultCode == RESULT_OK){ Uri contactUri = intent.getData(); Cursor nameCursor = getContentResolver().query(contactUri, null, null, null, null); if (nameCursor.moveToFirst()){ String name = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = nameCursor.getString(nameCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); ((EditText)findViewById(R.id.person_name)).setText(name); ((EditText)findViewById(R.id.enter_mobile)).setText(number); nameCursor.close(); } } break; } }


Esto es lo que implementé:

private String[] getContactList(){ ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); Log.i(LOG_TAG, "get Contact List: Fetching complete contact list"); ArrayList<String> contact_names = new ArrayList<String>(); 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 (cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER.trim())).equalsIgnoreCase("1")) { if (name!=null){ //contact_names[i]=name; Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null); while (pCur.moveToNext()) { String PhoneNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); PhoneNumber = PhoneNumber.replaceAll("-", ""); if (PhoneNumber.trim().length() >= 10) { PhoneNumber = PhoneNumber.substring(PhoneNumber.length() - 10); } contact_names.add(name + ":" + PhoneNumber); //i++; break; } pCur.close(); pCur.deactivate(); // i++; } } } cur.close(); cur.deactivate(); } String[] contactList = new String[contact_names.size()]; for(int j = 0; j < contact_names.size(); j++){ contactList[j] = contact_names.get(j); } return contactList; }

Puede llamar a esta función y tal vez usar un Autocompletar texto siguiente para mostrar y seleccionar el nombre del contacto y el número de 10 dígitos. Esta función devuelve String array, puede devolver directamente arrayList y eliminar el último bucle for.


Esto puede ayudarte:

public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); try { if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor cur = managedQuery(contactData, null, null, null, null); ContentResolver contect_resolver = getContentResolver(); if (cur.moveToFirst()) { String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); String name = ""; String no = ""; Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); if (phoneCur.moveToFirst()) { name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } Log.e("Phone no & name :***: ", name + " : " + no); txt.append(name + " : " + no + "/n"); id = null; name = null; no = null; phoneCur = null; } contect_resolver = null; cur = null; // populateContacts(); } } catch (IllegalArgumentException e) { e.printStackTrace(); Log.e("IllegalArgumentException::", e.toString()); } catch (Exception e) { e.printStackTrace(); Log.e("Error :: ", e.toString()); } }


Intenta seguir el código que te ayudará:

// You need below permission to read contacts <uses-permission android:name="android.permission.READ_CONTACTS"/> // Declare static final int PICK_CONTACT=1; Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT); //code @Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); switch (reqCode) { case (PICK_CONTACT) : if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null); if (c.moveToFirst()) { String id =c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); String hasPhone =c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if (hasPhone.equalsIgnoreCase("1")) { Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, null, null); phones.moveToFirst(); cNumber = phones.getString(phones.getColumnIndex("data1")); System.out.println("number is:"+cNumber); } String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); } } break; } }


Si desea elegir un contacto de la lista de contactos con un clic o evento de enfoque, copie este código y péguelo en Su actividad.

  • EVENTO DE ENFOQUE DE EDITAR TEXTO:

    phoneNo.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent,PICK_CONTACT );//PICK_CONTACT is private static final int, so declare in activity class } });

  • UNA FUNCIÓN PARA OBTENER EL NOMBRE DE CONTACTO Y EL TELÉFONO NO ES:

    public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); switch(reqCode){ case (PICK_CONTACT): if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = managedQuery(contactData, null, null, null, null); if (c.moveToFirst()) { String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if (hasPhone.equalsIgnoreCase("1")) { Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, null, null); phones.moveToFirst(); String phn_no = phones.getString(phones.getColumnIndex("data1")); String name = c.getString(c.getColumnIndex(StructuredPostal.DISPLAY_NAME)); Toast.makeText(this, "contact info : "+ phn_no+"/n"+name, Toast.LENGTH_LONG).show(); } } } }

    }


También puedes probar esta solución si el contacto tiene varios números.

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent , REQUEST_CODE_ADDRESS_BOOK );

y luego para el resultado de la actividad:

@Override public void onActivityResult(int reqCode, int resultCode, Intent data) { super.onActivityResult(reqCode, resultCode, data); switch (reqCode) { case (REQUEST_CODE_ADDRESS_BOOK): if (resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); Cursor c = getContentResolver().query(contactData, null, null, null, null); c.moveToFirst(); String phoneNumber = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); c.close(); } break; } }

Y luego, el número estará en phoneNumber variable.


Use Intent.ACTION_PICK para acceder al contacto telefónico. Codificar como

Uri uri = Uri.parse("content://contacts"); Intent intent = new Intent(Intent.ACTION_PICK, uri); intent.setType(Phone.CONTENT_TYPE); startActivityForResult(intent, REQUEST_CODE);

Dónde

private static final int REQUEST_CODE = 1;

Y use el método onActivityResult () para acceder al contacto seleccionado. Codificar como

@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_OK) { Uri uri = intent.getData(); String[] projection = { Phone.NUMBER, Phone.DISPLAY_NAME }; Cursor cursor = getContentResolver().query(uri, projection, null, null, null); cursor.moveToFirst(); int numberColumnIndex = cursor.getColumnIndex(Phone.NUMBER); String number = cursor.getString(numberColumnIndex); int nameColumnIndex = cursor.getColumnIndex(Phone.DISPLAY_NAME); String name = cursor.getString(nameColumnIndex); Log.d(TAG, "ZZZ number : " + number +" , name : "+name); } } };


intenta seguir el código,

Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts._ID); startActivityForResult(intent, PICK_CONTACT); public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == PICK_CONTACT) { Cursor cursor = managedQuery(Email.CONTENT_URI, null, Email.CONTACT_ID + " = " + intent.getData(), null, null); cursor.moveToNext(); String contactId = cursor.getString(cursor.getColumnIndex(Email._ID)); String name = cursor.getString(cursor.getColumnIndexOrThrow(Email.DATA1)); Toast.makeText(this, "Contect LIST = "+name, Toast.LENGTH_LONG).show(); } }


obtener número de teléfono móvil y dirección de correo electrónico

// Obtener número de teléfono

name = getIntent().getExtras().getString("name"); id = getIntent().getExtras().getString("contactid"); Cursor cursorPhone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " + ContactsContract.CommonDataKinds.Phone.TYPE + " = " + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, new String[]{id.toString()}, null); String contactNumber = null; if (cursorPhone.moveToFirst()) { contactNumber = cursorPhone.getString(cursorPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); System.out.println("contactnum"+contactNumber); } } cursorPhone.close();

// Obtener dirección de correo electrónico

Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null); if (emailCursor.moveToFirst()) { String phone = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); int type = emailCursor.getInt(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); String s = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(AddContactActivity.this.getResources(), type, ""); etEmail.setText(phone); } emailCursor.close(); }


Sin permisos de tiempo de ejecución o manifiesto, puede intentar esto.

Para recoger el nombre y el número de contacto de la aplicación de contactos. Mediante este código, la aplicación de contacto también mostrará el número debajo del nombre del contacto.

El código es elegir solo el nombre y número de la aplicación de contactos.

private void openContactSelectionIntent() { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(Intent.createChooser(intent, "Select Contact"), RC_SELECT_CONTACT); }

Y aquí está el código del método onActivityResult

Uri uri1 = data.getData(); Cursor c = managedQuery(uri1, null, null, null, null); if (c.moveToFirst()) { String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); System.out.println("name is: " + name); } Cursor cursor = getContentResolver().query(uri1, null, null, null, null); if (null == cursor) return; try { while (cursor.moveToNext()) { String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); System.out.println("number is "+number); } }catch (Exception e){ e.printStackTrace(); }finally { cursor.close(); }


  • Elemento de lista

este trabajo para mi

obtener número de móvil y nombre

startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), TYPE_CONTACT);

caso TYPE_CONTACT: uriContact = data.getData ();

String name=retrieveContactName(); System.out.println("name = " + name); String number=retrieveContactNumber(); System.out.println("number = " + number); break;

}}

Cadena privada retrieveContactNumber () {

String contactNumber = null; // getting contacts ID Cursor cursorID = getContentResolver().query(uriContact, new String[]{ContactsContract.Contacts._ID}, null, null, null); if (cursorID.moveToFirst()) { contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID)); } cursorID.close(); Log.d(TAG, "Contact ID: " + contactID); // Using the contact ID now we will get contact phone number Cursor cursorPhone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " + ContactsContract.CommonDataKinds.Phone.TYPE + " = " + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, new String[]{contactID}, null); if (cursorPhone.moveToFirst()) { contactNumber = cursorPhone.getString(cursorPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } cursorPhone.close(); Log.d(TAG, "Contact Phone Number: " + contactNumber); return contactNumber; } private String retrieveContactName() { String contactName = null; // querying contact data store Cursor cursor = getContentResolver().query(uriContact, null, null, null, null); if (cursor.moveToFirst()) { // DISPLAY_NAME = The display name for the contact. // HAS_PHONE_NUMBER = An indicator of whether this contact has at least one phone number. contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); } cursor.close(); Log.d(TAG, "Contact Name: " + contactName); return contactName; }