Fixed contact picker

pull/155/head
M66B 6 years ago
parent d4abcbed65
commit e037b02db5

@ -1332,47 +1332,92 @@ public class FragmentCompose extends FragmentBase {
} }
private void handlePickContact(int requestCode, Intent data) { private void handlePickContact(int requestCode, Intent data) {
Cursor cursor = null; Uri uri = data.getData();
try { if (uri == null)
Uri uri = data.getData(); return;
if (uri != null)
cursor = resolver.query(uri, Bundle args = new Bundle();
args.putLong("id", working);
args.putInt("requestCode", requestCode);
args.putParcelable("uri", uri);
new SimpleTask<EntityMessage>() {
@Override
protected EntityMessage onExecute(Context context, Bundle args) throws Throwable {
long id = args.getLong("id");
int requestCode = args.getInt("requestCode");
Uri uri = args.getParcelable("uri");
EntityMessage draft = null;
DB db = DB.getInstance(context);
try (Cursor cursor = context.getContentResolver().query(
uri,
new String[]{ new String[]{
ContactsContract.CommonDataKinds.Email.ADDRESS, ContactsContract.CommonDataKinds.Email.ADDRESS,
ContactsContract.Contacts.DISPLAY_NAME ContactsContract.Contacts.DISPLAY_NAME
}, },
null, null, null); null, null, null)) {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
int colEmail = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS); int colEmail = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS);
int colName = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); int colName = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
String email = cursor.getString(colEmail); String email = cursor.getString(colEmail);
String name = cursor.getString(colName); String name = cursor.getString(colName);
try {
db.beginTransaction();
draft = db.message().getMessage(id);
if (draft == null)
return null;
Address[] address = null;
if (requestCode == ActivityCompose.REQUEST_CONTACT_TO)
address = draft.to;
else if (requestCode == ActivityCompose.REQUEST_CONTACT_CC)
address = draft.cc;
else if (requestCode == ActivityCompose.REQUEST_CONTACT_BCC)
address = draft.bcc;
List<Address> list = new ArrayList<>();
if (address != null)
list.addAll(Arrays.asList(address));
String text = null; list.add(new InternetAddress(email, name));
if (requestCode == ActivityCompose.REQUEST_CONTACT_TO)
text = etTo.getText().toString(); if (requestCode == ActivityCompose.REQUEST_CONTACT_TO)
else if (requestCode == ActivityCompose.REQUEST_CONTACT_CC) draft.to = list.toArray(new Address[0]);
text = etCc.getText().toString(); else if (requestCode == ActivityCompose.REQUEST_CONTACT_CC)
else if (requestCode == ActivityCompose.REQUEST_CONTACT_BCC) draft.cc = list.toArray(new Address[0]);
text = etBcc.getText().toString(); else if (requestCode == ActivityCompose.REQUEST_CONTACT_BCC)
draft.bcc = list.toArray(new Address[0]);
StringBuilder sb = new StringBuilder(text);
sb.append("\"").append(name).append("\" <").append(email).append(">, "); db.message().updateMessage(draft);
if (requestCode == ActivityCompose.REQUEST_CONTACT_TO) db.setTransactionSuccessful();
etTo.setText(sb.toString()); } finally {
else if (requestCode == ActivityCompose.REQUEST_CONTACT_CC) db.endTransaction();
etCc.setText(sb.toString()); }
else if (requestCode == ActivityCompose.REQUEST_CONTACT_BCC) }
etBcc.setText(sb.toString()); }
return draft;
} }
} catch (Throwable ex) {
Log.e(ex); @Override
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); protected void onExecuted(Bundle args, EntityMessage draft) {
} finally { if (draft != null) {
if (cursor != null) etTo.setText(MessageHelper.formatAddressesCompose(draft.to));
cursor.close(); etCc.setText(MessageHelper.formatAddressesCompose(draft.cc));
} etBcc.setText(MessageHelper.formatAddressesCompose(draft.bcc));
}
}
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex);
}
}.execute(getContext(), getViewLifecycleOwner(), args, "compose:picked");
} }
private void handleAddAttachment(Uri uri, final boolean image) { private void handleAddAttachment(Uri uri, final boolean image) {

Loading…
Cancel
Save