giovedì 16 maggio 2013

Rubrica Android in ArrayList


State realizzando un'app Android che legge i contatti dalla rubrica e vi serve memorizzare tutti i nomi e i numeri di telefono?
Vi mostro come fare per riempire un ArrayList con i nomi e i numeri dei vostri amici!

Creamo la Classe MainActivity.java:

import java.util.ArrayList;

import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
    private ArrayList <String> dati=new ArrayList<String>();
   

   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
              
        Cursor cursor = getContentResolver().query(
                ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
       

   
       
       
while (cursor.moveToNext()) {

        String contactId = cursor.getString(cursor
                        .getColumnIndex(Contacts._ID));

        String name = cursor.getString(cursor
                        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
       

        String hasPhone = cursor
                        .getString(cursor
                                        .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));


        if (!Boolean.parseBoolean(hasPhone)) {

                Cursor phones = getContentResolver().query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                                + " = " + contactId, null, null);

                while (phones.moveToNext()) {
                        String number = phones
                                        .getString(phones
                                          .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        String nome=phones
                                .getString(phones
                                        .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                        dati.add(nome);
                        dati.add(number);
                      
                }
                phones.close();
        }
}

cursor.close();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

Ora inseriamo nel manifest.xml il seguente permesso:

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

Bene! Ora nell'ArrayList dati avrete tutti i nomi degli amici e i numeri di telefono, in sequenza alternata. Per leggerli in coppia consiglio di utilizzare un ciclo for che ad ogni ripetizione incrementi un indice di un valore pari a 2

es. for(int i=0;i<=dati.size();i+2).

Spero di esservi stato utile!

Nessun commento:

Posta un commento