package com.smartisanos.sidebar;
import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
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.text.TextUtils;
import android.util.Log;
import com.smartisanos.sidebar.util.BitmapUtils;
import com.smartisanos.sidebar.util.ContactManager;
import com.smartisanos.sidebar.util.MailContact;
public class SelectMailContactActivity extends Activity {
private static final int REQUEST_SELECT_MAIL = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(Intent.ACTION_PICK);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setPackage("com.android.contacts");
intent.setType("vnd.android.cursor.dir/email_v2");
/**
ArrayList<Long> ids = new ArrayList<Long>();
for (ContactItem ci : ContactManager.getInstance(this).getContactList()) {
if (ci instanceof MailContact) {
MailContact mc = (MailContact) ci;
if (MailContactsHelper.getInstance(this).isContact(mc.getAddress())) {
ids.add(MailContactsHelper.getInstance(this).getContactId( mc.getAddress()));
}
}
}
if (ids.size() > 0) {
intent.putExtra(ContactsContractSmt.get_BASE_URI(), ContactsContract.CommonDataKinds.Phone.CONTENT_URI.toString());
intent.putExtra(ContactsContractSmt.get_EXTRA_PHONE_IDS(), ids);
}
*/
startActivityForResult(intent, REQUEST_SELECT_MAIL);
overridePendingTransition(smartisanos.R.anim.pop_up_in, smartisanos.R.anim.fake_anim);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_SELECT_MAIL) {
if(resultCode == Activity.RESULT_OK){
addContacts(data);
}
finish();
}
}
private void addContacts(Intent result) {
if (result == null|| result.getData() == null) {
return;
}
new AllEmailContactsTask().execute(result.getData());
}
private class AllEmailContactsTask extends AsyncTask<Uri, Integer, MailContact> {
@Override
protected void onPostExecute(MailContact contact) {
if (contact != null) {
ContactManager.getInstance(getApplicationContext()).addContact(contact);
}
}
private Bitmap getAvatarById(long id){
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
return BitmapFactory.decodeStream(ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(), uri));
}
@Override
protected MailContact doInBackground(Uri... params) {
Uri uri = params[0];
Cursor cursor = null;
try {
cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String mimeType = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Data.MIMETYPE));
if (TextUtils.equals(mimeType, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) {
int contactId = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
Bitmap avatar = getAvatarById(contactId);
String email = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Email.ADDRESS));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
if (!TextUtils.isEmpty(email) && !TextUtils.isEmpty(name)) {
if (avatar != null) {
return new MailContact(getApplicationContext(), BitmapUtils.getContactAvatar(getApplicationContext(), avatar), name, email);
} else {
return new MailContact(getApplicationContext(), name, email);
}
}
}
} while (cursor.moveToNext());
}
} catch (Exception ex){
ex.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
}
}