package cn.mutils.app.media;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import java.util.ArrayList;
import java.util.List;
import cn.mutils.app.ui.core.IActivityExecutor;
import cn.mutils.core.event.IListener;
@SuppressWarnings({"UnnecessaryInterfaceModifier", "ConstantConditions"})
public class PickContactTask extends MediaTask {
public static interface PickContactListener extends IListener {
public void onComplete(String name, List<String> phones);
}
public PickContactTask(IActivityExecutor executor, int requestCode) {
super(executor, requestCode);
}
public boolean pickContact() {
if (mLocked) {
return false;
}
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
try {
mExecutor.startActivityForResult(intent, mRequestCode);
} catch (Exception e) {
return false;
}
mExecutor.addOnActivityResultListener(mOnActivityResultListener);
mLocked = true;
return true;
}
public void setListener(PickContactListener listener) {
super.setListener(listener);
}
@Override
protected void onActivityResult(Context context, int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
return;
}
ContentResolver resolver = mExecutor.getContext().getContentResolver();
Cursor c = resolver.query(data.getData(), null, null, null, null);
if (!c.moveToFirst()) {
if (!c.isClosed()) {
c.close();
}
return;
}
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhone = c.getString(c.getColumnIndex(Contacts.HAS_PHONE_NUMBER));
if (!hasPhone.equals("1")) {
if (!c.isClosed()) {
c.close();
}
return;
}
String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
Cursor pc = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
ArrayList<String> phones = new ArrayList<String>();
if (pc.moveToNext()) {
for (; !pc.isAfterLast(); pc.moveToNext()) {
int index = pc.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
String phone = pc.getString(index);
phones.add(phone);
}
}
if (!pc.isClosed()) {
pc.close();
}
if (!c.isClosed()) {
c.close();
}
if (phones.size() == 0) {
return;
}
PickContactListener listener = getListener(PickContactListener.class);
if (listener != null) {
listener.onComplete(name, phones);
}
}
}