Mon objectif est de afficher uniquement des contacts avec le numéro de téléphone à l'utilisateur et de laisser l'utilisateur sélectionner quelques contacts que je veux stocker localement.
J'ai utilisé diverses options à la place de contactsContract.contact.Content_uri dans la méthode ci-dessous. Mais je reçois beaucoup de nombreux contacts (beaucoup sont des indiscripk avec seulement des identifiants de messagerie) affichés. P> si je passe contacterSContract.contact.Content_uri en tant que paramètre pour la méthode ci-dessus et Cas de la méthode de gestionnaire ci-dessous, la chaîne [] pour la méthode de la requête en tant que paramètres de projection (qui sont présentées commentées), la méthode échoue avec Java.lang.illegalargumentException. Si je passe null dans la méthode ci-dessous, alors quel que soit le contact que je sélectionne, je ne trouve aucune colonne liée au numéro de téléphone ou au courrier électronique. P> est là seulement Les contacts visibles à l'utilisateur Habituellement, lorsque l'utilisateur se rend sur le répertoire téléphonique et qui dispose de numéros de téléphone disponibles? P> J'ai essayé de traverser tous les threads de Stackoverflow et d'autres sites, mais je n'ai pas trouvé de solution qui résolve la question de ce problème. Beaucoup de gens ont posté le problème. Je n'ai pas beaucoup travaillé avec la plate-forme Android et j'aurais peut-être manqué certains détails mineurs et je crois qu'il doit y avoir un moyen facile de y parvenir. P> veuillez suggérer. Appréciez votre aide. P> Merci. P> P>
5 Réponses :
Veuillez utiliser le code ci-dessous
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, 1);
Merci. Ça a marché. Je viens de sauter pour coder sans lire une grande partie des bases. J'ai utilisé ContactContract.Contact.Content_Type, mais maintenant je vois qu'il y a de telles options et la différence entre eux.
Bien que je n'ai pas vu les informations par e-mail retournées pour le contact. N'y a-t-il pas de paramètre de chaîne qui peut apporter toutes les informations relatives au contact, y compris la maison, les numéros mobiles et les emails?
Après avoir passé plus de détails et en lisant à la poste ci-dessous à Stackoverflow.com/Questions/8612531/... Il devient très clair sur ce qu'il faut être nécessaire pour obtenir le courrier électronique et le numéro de téléphone. Pour le mettre en bref, après avoir récupéré _ID pour le contact sélectionné, de l'intention affichée à partir de l'exemple ci-dessus, nous devons reconquérir à l'aide du résolveur de contact, en passant l'URI _id et approprié pour le numéro de téléphone et le courrier électronique pour récupérer les détails requis. Le lien explique également comment gérer le scénario si le contact donné comporte plusieurs numéros de téléphone.
Comme ceci, c'est quel type nous utilisons pour obtenir des contacts qui ont des mailid?
n'a pas compris votre question
Le code suivant fera ce que vous voulez.
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(Intent.createChooser(intent, "Contact"), PICK_CONTACT);
Uri uri = Uri.parse("content://contacts"); Intent intent = new Intent(Intent.ACTION_PICK, uri); intent.setType(Phone.CONTENT_TYPE); startActivityForResult(intent, REQUEST_CODE);
Utilisez ceci:
Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/people")); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, 1);
*-> Add a permission to read contacts data to your application manifest. <uses-permission android:name="android.permission.READ_CONTACTS"/> -> Use Intent.ACTION_PICK in your Activity Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT); -> Then Override the onActivityResult() and retrieve the ID,Phone number and Name in the data. @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"); } } This will work check it out*