Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package dradev.pocs.mycontatos;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.util.Calendar;
- import android.app.Activity;
- import android.app.ProgressDialog;
- import android.database.Cursor;
- import android.database.MatrixCursor;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.net.Uri;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.provider.ContactsContract;
- import android.support.v4.widget.SimpleCursorAdapter;
- import android.util.Log;
- import android.widget.ListView;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- SimpleCursorAdapter mAdapter;
- MatrixCursor mMatrixCursor;
- int quantidade;
- private static final String CAT = "@Dradev";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // The contacts from the contacts content provider is stored in this cursor
- mMatrixCursor = new MatrixCursor(new String[] { "_id","name","photo","details"} );
- // Adapter to set data in the listview
- mAdapter = new SimpleCursorAdapter(getBaseContext(),
- R.layout.lv_contatos_layout2,
- null,
- new String[] { "name","photo","details"},
- new int[] { R.id.contato_nome,R.id.contato_foto,R.id.contato_detalhes}, 0);
- ListView lstContatos = (ListView)findViewById(R.id.lv_contatos);
- lstContatos.setAdapter(mAdapter);
- // Creating an AsyncTask object to retrieve and load listview with contacts
- ListViewContactsLoader listViewContactsLoader = new ListViewContactsLoader();
- // Starting the AsyncTask process to retrieve and load listview with contacts
- listViewContactsLoader.execute();
- }
- ////////////////////////////////////////////////
- /** An AsyncTask class to retrieve and load listview with contacts */
- private class ListViewContactsLoader extends AsyncTask<Void, Void, Cursor>{
- Calendar dataInicial;
- Calendar dataFinal;
- private ProgressDialog progressDialog;
- @Override
- protected void onPreExecute() {
- Log.i(CAT, "Mostrando Progress Dialog");
- progressDialog = new ProgressDialog(MainActivity.this);
- progressDialog.setMessage("Aguarde...");
- progressDialog.show();
- dataInicial = Calendar.getInstance();
- }
- @Override
- protected Cursor doInBackground(Void... params) {
- Log.i(CAT, "Iniciando doInBackgorund");
- Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
- // Querying the table ContactsContract.Contacts to retrieve all the contacts
- Cursor contactsCursor = getContentResolver().query(contactsUri, null, null, null,
- ContactsContract.Contacts.DISPLAY_NAME + " ASC ");
- quantidade = contactsCursor.getCount();
- if(contactsCursor.moveToFirst()){
- do{
- long contactId = contactsCursor.getLong(contactsCursor.getColumnIndex("_ID"));
- Uri dataUri = ContactsContract.Data.CONTENT_URI;
- // Querying the table ContactsContract.Data to retrieve individual items like
- // home phone, mobile phone, work email etc corresponding to each contact
- Cursor dataCursor = getContentResolver().query(dataUri, null,
- ContactsContract.Data.CONTACT_ID + "=" + contactId,
- null, null);
- String displayName="";
- String nickName="";
- String homePhone="";
- String mobilePhone="";
- String workPhone="";
- String photoPath="" + R.drawable.boneco;
- byte[] photoByte;
- String homeEmail="";
- String workEmail="";
- String companyName="";
- String title="";
- byte[] isPhoto;
- if(dataCursor.moveToFirst()){
- // Getting Display Name
- displayName = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME ));
- do{
- // Getting NickName
- if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE))
- nickName = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- // Getting Phone numbers
- if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){
- switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){
- case ContactsContract.CommonDataKinds.Phone.TYPE_HOME :
- homePhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- break;
- case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE :
- mobilePhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- break;
- case ContactsContract.CommonDataKinds.Phone.TYPE_WORK :
- workPhone = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- break;
- }
- }
- // Getting EMails
- if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE ) ) {
- switch(dataCursor.getInt(dataCursor.getColumnIndex("data2"))){
- case ContactsContract.CommonDataKinds.Email.TYPE_HOME :
- homeEmail = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- break;
- case ContactsContract.CommonDataKinds.Email.TYPE_WORK :
- workEmail = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- break;
- }
- }
- // Getting Organization details
- if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)){
- companyName = dataCursor.getString(dataCursor.getColumnIndex("data1"));
- title = dataCursor.getString(dataCursor.getColumnIndex("data4"));
- }
- // Pega Foto
- if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){
- isPhoto = dataCursor.getBlob(dataCursor.getColumnIndex("data15"));
- if(isPhoto != null) {
- photoByte = isPhoto;
- Bitmap bitmap = BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length);
- // Getting Caching directory
- File cacheDirectory = getBaseContext().getCacheDir();
- // Temporary file to store the contact image
- File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"+contactId+".png");
- // The FileOutputStream to the temporary file
- try {
- FileOutputStream fOutStream = new FileOutputStream(tmpFile);
- // Writing the bitmap to the temporary file as png file
- bitmap.compress(Bitmap.CompressFormat.PNG,100, fOutStream);
- // Flush the FileOutputStream
- fOutStream.flush();
- //Close the FileOutputStream
- fOutStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- photoPath = tmpFile.getPath();
- }
- }
- }while(dataCursor.moveToNext());
- String details = "";
- // Concatenating various information to single string
- if(homePhone != null && !homePhone.equals("") )
- details = "HomePhone : " + homePhone + "\n";
- if(mobilePhone != null && !mobilePhone.equals("") )
- details += "MobilePhone : " + mobilePhone + "\n";
- if(workPhone != null && !workPhone.equals("") )
- details += "WorkPhone : " + workPhone + "\n";
- if(nickName != null && !nickName.equals("") )
- details += "NickName : " + nickName + "\n";
- if(homeEmail != null && !homeEmail.equals("") )
- details += "HomeEmail : " + homeEmail + "\n";
- if(workEmail != null && !workEmail.equals("") )
- details += "WorkEmail : " + workEmail + "\n";
- if(companyName != null && !companyName.equals("") )
- details += "CompanyName : " + companyName + "\n";
- if(title != null && !title.equals("") )
- details += "Title : " + title + "\n";
- // Adding id, display name, path to photo and other details to cursor
- mMatrixCursor.addRow(new Object[]{ Long.toString(contactId),displayName,photoPath,details});
- }
- }while(contactsCursor.moveToNext());
- }
- return mMatrixCursor;
- }
- ///////////////////////////////////////////////////////////
- @Override
- protected void onPostExecute(Cursor result) {
- // Setting the cursor containing contacts to listview
- Log.i(CAT, "Finalizando AsynkTask");
- mAdapter.swapCursor(result);
- progressDialog.dismiss();
- dataFinal = Calendar.getInstance();
- long diferenca = dataFinal.getTimeInMillis() - dataInicial.getTimeInMillis();
- Toast.makeText(MainActivity.this, "Tempo decorrido: " + diferenca , Toast.LENGTH_LONG).show();
- Toast.makeText(MainActivity.this, "Quantidade de Contatos: " + quantidade, Toast.LENGTH_SHORT).show();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement