Visualizzare i contatti solo con i numbers di telefono utilizzando l'intenzione ACTION_PICK nel dispositivo Android

Il mio objective è solo visualizzare i contatti con il numero di telefono dell'utente e consentire all'utente di select pochi contatti che voglio memorizzare localmente.

Ho usato varie opzioni in sostituzione di ContattiContract.Contacts.CONTENT_URI nel metodo sottostante. Ma sono in arrivo molti dei contatti (molti sono spazzatura con solo ID di posta elettronica) visualizzati.

  • Come fare un'applicazione per soli 3 giorni
  • Android che modifica il colore di background per il frammento di preferenza
  • Come integrare facebook, twitter e google plus in un'applicazione android
  • Hai bisogno di un semplice tutorial per il lavoro di android / webservice?
  • handler.postDelayed vs AlarmManager vs
  • android condividi l'image da url
  • public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contact_selector); ((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(contactIntent, 1); } }); } 

    Se faccio passare ContactContract.Contacts.CONTENT_URI come parametro per il metodo di cui sopra e in caso di metodo sotto gestore, il metodo String [] per il metodo di query come parametri di proiezione (che vengono mostrati commentati), il metodo non riesce con java.lang.IllegalArgumentException. Se passai null nel metodo sotto, allora qualunque contatto seleziono, non trovo alcuna colonna relativa al numero di telefono o all'email.

      @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(data != null) { Uri uri = data.getData(); if(uri != null) { Cursor c = null; try { c = getContentResolver().query(uri, null // new String[] { //ContactsContract.CommonDataKinds.Phone.NUMBER, //ContactsContract.CommonDataKinds.Phone.TYPE}, , null, null, null); if(c != null && c.moveToFirst()) { String number = c.getString(0); String type = c.getString(1); } } finally { if(c != null && !c.isClosed()) c.close(); } } } } 

    C'è un modo per visualizzare solo i contatti visibili all'utente in genere quando l'utente va alla rubrica telefonica e che dispone di numbers telefonici disponibili?

    Ho provato a passare attraverso tutti i thread in stackoverflow e in altri siti, ma non ho trovato alcuna soluzione che risolve il problema intorno a questo anche se molte persone hanno pubblicato il problema. Non ho lavorato molto con la piattaforma Android e avrei potuto perdere alcuni dettagli minori e credo che ci deve essere un modo semplice per raggiungere questo objective.

    Suggerisco gentilmente. Apprezzi il tuo aiuto.

    Grazie.

  • FragmentTransaction: sostituire e addToBackStack non lavorare insieme?
  • Come utilizzare SwipeDismissBehavior.OnDismissListener su RecyclerView
  • Come aprire solo la metà della tastiera in modalità Paesaggio?
  • Android NDK: come includere Android.mk in un'altra Android.mk (struttura del progetto gerarchico)?
  • Come utilizzare i tubi unix in Android
  • Le mappe android supportno l'overlay del terreno?
  • 5 Solutions collect form web for “Visualizzare i contatti solo con i numbers di telefono utilizzando l'intenzione ACTION_PICK nel dispositivo Android”

    Utilizza il codice sottostante

     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, 1); 

    Il seguente codice farà quello che vuoi.

     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); 
     *-> 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* 

    Usa questo:

     Intent intent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts/people")); intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); startActivityForResult(intent, 1); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.