take intent type into account when sharing with conversations
This commit is contained in:
parent
7d7e158fd7
commit
d4cbf2e11e
|
@ -572,8 +572,8 @@ public class XmppConnectionService extends Service {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void attachImageToConversation(final Conversation conversation, final Uri uri, final UiCallback<Message> callback) {
|
public void attachImageToConversation(final Conversation conversation, final Uri uri, final String type, final UiCallback<Message> callback) {
|
||||||
final String mimeType = MimeUtils.guessMimeTypeFromUri(this, uri);
|
final String mimeType = MimeUtils.guessMimeTypeFromUriAndMime(this, uri, type);
|
||||||
final String compressPictures = getCompressPicturesPreference();
|
final String compressPictures = getCompressPicturesPreference();
|
||||||
|
|
||||||
if ("never".equals(compressPictures)
|
if ("never".equals(compressPictures)
|
||||||
|
|
|
@ -688,14 +688,14 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
toggleInputMethod();
|
toggleInputMethod();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void attachImageToConversation(Conversation conversation, Uri uri) {
|
private void attachImageToConversation(Conversation conversation, Uri uri, String type) {
|
||||||
if (conversation == null) {
|
if (conversation == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Toast prepareFileToast = Toast.makeText(getActivity(), getText(R.string.preparing_image), Toast.LENGTH_LONG);
|
final Toast prepareFileToast = Toast.makeText(getActivity(), getText(R.string.preparing_image), Toast.LENGTH_LONG);
|
||||||
prepareFileToast.show();
|
prepareFileToast.show();
|
||||||
activity.delegateUriPermissionsToService(uri);
|
activity.delegateUriPermissionsToService(uri);
|
||||||
activity.xmppConnectionService.attachImageToConversation(conversation, uri,
|
activity.xmppConnectionService.attachImageToConversation(conversation, uri, type,
|
||||||
new UiCallback<Message>() {
|
new UiCallback<Message>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -889,7 +889,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
attachLocationToConversation(conversation, attachment.getUri());
|
attachLocationToConversation(conversation, attachment.getUri());
|
||||||
} else if (attachment.getType() == Attachment.Type.IMAGE) {
|
} else if (attachment.getType() == Attachment.Type.IMAGE) {
|
||||||
Log.d(Config.LOGTAG, "ConversationsActivity.commitAttachments() - attaching image to conversations. CHOOSE_IMAGE");
|
Log.d(Config.LOGTAG, "ConversationsActivity.commitAttachments() - attaching image to conversations. CHOOSE_IMAGE");
|
||||||
attachImageToConversation(conversation, attachment.getUri());
|
attachImageToConversation(conversation, attachment.getUri(), attachment.getMime());
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, "ConversationsActivity.commitAttachments() - attaching file to conversations. CHOOSE_FILE/RECORD_VOICE/RECORD_VIDEO");
|
Log.d(Config.LOGTAG, "ConversationsActivity.commitAttachments() - attaching file to conversations. CHOOSE_FILE/RECORD_VOICE/RECORD_VIDEO");
|
||||||
attachFileToConversation(conversation, attachment.getUri(), attachment.getMime());
|
attachFileToConversation(conversation, attachment.getUri(), attachment.getMime());
|
||||||
|
@ -2186,13 +2186,14 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
final boolean asQuote = extras.getBoolean(ConversationsActivity.EXTRA_AS_QUOTE);
|
final boolean asQuote = extras.getBoolean(ConversationsActivity.EXTRA_AS_QUOTE);
|
||||||
final boolean pm = extras.getBoolean(ConversationsActivity.EXTRA_IS_PRIVATE_MESSAGE, false);
|
final boolean pm = extras.getBoolean(ConversationsActivity.EXTRA_IS_PRIVATE_MESSAGE, false);
|
||||||
final boolean doNotAppend = extras.getBoolean(ConversationsActivity.EXTRA_DO_NOT_APPEND, false);
|
final boolean doNotAppend = extras.getBoolean(ConversationsActivity.EXTRA_DO_NOT_APPEND, false);
|
||||||
|
final String type = extras.getString(ConversationsActivity.EXTRA_TYPE);
|
||||||
final List<Uri> uris = extractUris(extras);
|
final List<Uri> uris = extractUris(extras);
|
||||||
if (uris != null && uris.size() > 0) {
|
if (uris != null && uris.size() > 0) {
|
||||||
if (uris.size() == 1 && "geo".equals(uris.get(0).getScheme())) {
|
if (uris.size() == 1 && "geo".equals(uris.get(0).getScheme())) {
|
||||||
mediaPreviewAdapter.addMediaPreviews(Attachment.of(getActivity(), uris.get(0), Attachment.Type.LOCATION));
|
mediaPreviewAdapter.addMediaPreviews(Attachment.of(getActivity(), uris.get(0), Attachment.Type.LOCATION));
|
||||||
} else {
|
} else {
|
||||||
final List<Uri> cleanedUris = cleanUris(new ArrayList<>(uris));
|
final List<Uri> cleanedUris = cleanUris(new ArrayList<>(uris));
|
||||||
mediaPreviewAdapter.addMediaPreviews(Attachment.of(getActivity(), cleanedUris));
|
mediaPreviewAdapter.addMediaPreviews(Attachment.of(getActivity(), cleanedUris, type));
|
||||||
}
|
}
|
||||||
toggleInputMethod();
|
toggleInputMethod();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -99,6 +99,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
|
||||||
public static final String EXTRA_DO_NOT_APPEND = "do_not_append";
|
public static final String EXTRA_DO_NOT_APPEND = "do_not_append";
|
||||||
public static final String EXTRA_POST_INIT_ACTION = "post_init_action";
|
public static final String EXTRA_POST_INIT_ACTION = "post_init_action";
|
||||||
public static final String POST_ACTION_RECORD_VOICE = "record_voice";
|
public static final String POST_ACTION_RECORD_VOICE = "record_voice";
|
||||||
|
public static final String EXTRA_TYPE = "type";
|
||||||
|
|
||||||
private static final List<String> VIEW_AND_SHARE_ACTIONS = Arrays.asList(
|
private static final List<String> VIEW_AND_SHARE_ACTIONS = Arrays.asList(
|
||||||
ACTION_VIEW_CONVERSATION,
|
ACTION_VIEW_CONVERSATION,
|
||||||
|
|
|
@ -33,7 +33,8 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
|
||||||
refreshUi();
|
refreshUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Share {
|
private static class Share {
|
||||||
|
public String type;
|
||||||
ArrayList<Uri> uris = new ArrayList<>();
|
ArrayList<Uri> uris = new ArrayList<>();
|
||||||
public String account;
|
public String account;
|
||||||
public String contact;
|
public String contact;
|
||||||
|
@ -65,6 +66,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
if (grantResults.length > 0)
|
if (grantResults.length > 0)
|
||||||
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
if (requestCode == REQUEST_STORAGE_PERMISSION) {
|
if (requestCode == REQUEST_STORAGE_PERMISSION) {
|
||||||
|
@ -139,6 +141,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
|
||||||
} else if (type != null && uri != null) {
|
} else if (type != null && uri != null) {
|
||||||
this.share.uris.clear();
|
this.share.uris.clear();
|
||||||
this.share.uris.add(uri);
|
this.share.uris.add(uri);
|
||||||
|
this.share.type = type;
|
||||||
} else {
|
} else {
|
||||||
this.share.text = text;
|
this.share.text = text;
|
||||||
this.share.asQuote = asQuote;
|
this.share.asQuote = asQuote;
|
||||||
|
@ -193,6 +196,9 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
|
||||||
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
|
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
|
||||||
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, share.uris);
|
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, share.uris);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
if (share.type != null) {
|
||||||
|
intent.putExtra(ConversationsActivity.EXTRA_TYPE, share.type);
|
||||||
|
}
|
||||||
} else if (share.text != null) {
|
} else if (share.text != null) {
|
||||||
intent.setAction(ConversationsActivity.ACTION_VIEW_CONVERSATION);
|
intent.setAction(ConversationsActivity.ACTION_VIEW_CONVERSATION);
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, share.text);
|
intent.putExtra(Intent.EXTRA_TEXT, share.text);
|
||||||
|
|
|
@ -136,10 +136,10 @@ public class Attachment implements Parcelable {
|
||||||
return Collections.singletonList(new Attachment(uri, type, mime));
|
return Collections.singletonList(new Attachment(uri, type, mime));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Attachment> of(final Context context, List<Uri> uris) {
|
public static List<Attachment> of(final Context context, List<Uri> uris, final String type) {
|
||||||
List<Attachment> attachments = new ArrayList<>();
|
final List<Attachment> attachments = new ArrayList<>();
|
||||||
for (Uri uri : uris) {
|
for (final Uri uri : uris) {
|
||||||
final String mime = MimeUtils.guessMimeTypeFromUri(context, uri);
|
final String mime = MimeUtils.guessMimeTypeFromUriAndMime(context, uri, type);
|
||||||
attachments.add(new Attachment(uri, mime != null && isImage(mime) ? Type.IMAGE : Type.FILE, mime));
|
attachments.add(new Attachment(uri, mime != null && isImage(mime) ? Type.IMAGE : Type.FILE, mime));
|
||||||
}
|
}
|
||||||
return attachments;
|
return attachments;
|
||||||
|
|
Loading…
Reference in a new issue