mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
Merge pull request #4491 from deltachat/adb/allow-select-multiple-files
allow to select multiple files
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
* Allow to select multiple files for sending
|
||||
* Add notifications for missed calls
|
||||
|
||||
## v2.53.0
|
||||
|
||||
@@ -441,32 +441,19 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
else mediaType = MediaType.IMAGE;
|
||||
setMedia(singleUri, mediaType);
|
||||
} else {
|
||||
final ClipData multipleUris = data.getClipData();
|
||||
if (multipleUris != null) {
|
||||
final int uriCount = multipleUris.getItemCount();
|
||||
if (uriCount > 0) {
|
||||
ArrayList<Uri> uriList = new ArrayList<>(uriCount);
|
||||
for (int i = 0; i < uriCount; i++) {
|
||||
uriList.add(multipleUris.getItemAt(i).getUri());
|
||||
}
|
||||
askSendingFiles(
|
||||
uriList,
|
||||
() -> {
|
||||
Util.runOnAnyBackgroundThread(
|
||||
() -> {
|
||||
SendRelayedMessageUtil.sendMultipleMsgs(this, chatId, uriList, null);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
sendMultipleMsgs(data);
|
||||
}
|
||||
break;
|
||||
|
||||
case PICK_DOCUMENT:
|
||||
final String docMimeType = MediaUtil.getMimeType(this, data.getData());
|
||||
final MediaType docMediaType =
|
||||
MediaUtil.isAudioType(docMimeType) ? MediaType.AUDIO : MediaType.DOCUMENT;
|
||||
setMedia(data.getData(), docMediaType);
|
||||
if (data.getData() != null) { // single Uri
|
||||
final String docMimeType = MediaUtil.getMimeType(this, data.getData());
|
||||
final MediaType docMediaType =
|
||||
MediaUtil.isAudioType(docMimeType) ? MediaType.AUDIO : MediaType.DOCUMENT;
|
||||
setMedia(data.getData(), docMediaType);
|
||||
} else {
|
||||
sendMultipleMsgs(data);
|
||||
}
|
||||
break;
|
||||
|
||||
case PICK_WEBXDC:
|
||||
@@ -509,6 +496,25 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
}
|
||||
}
|
||||
|
||||
private void sendMultipleMsgs(Intent data) {
|
||||
final ClipData multipleUris = data.getClipData();
|
||||
if (multipleUris != null) {
|
||||
final int uriCount = multipleUris.getItemCount();
|
||||
if (uriCount > 0) {
|
||||
ArrayList<Uri> uriList = new ArrayList<>(uriCount);
|
||||
for (int i = 0; i < uriCount; i++) {
|
||||
uriList.add(multipleUris.getItemAt(i).getUri());
|
||||
}
|
||||
askSendingFiles(
|
||||
uriList,
|
||||
() -> {
|
||||
Util.runOnAnyBackgroundThread(
|
||||
() -> SendRelayedMessageUtil.sendMultipleMsgs(this, chatId, uriList, null));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startActivity(Intent intent) {
|
||||
if (intent.getStringExtra(Browser.EXTRA_APPLICATION_ID) != null) {
|
||||
|
||||
@@ -212,7 +212,12 @@ public class WelcomeActivity extends BaseActionBarActivity
|
||||
File imexDir = DcHelper.getImexDir();
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
AttachmentManager.selectMediaType(
|
||||
this, "application/x-tar", null, PICK_BACKUP, StorageUtil.getDownloadUri());
|
||||
this,
|
||||
"application/x-tar",
|
||||
null,
|
||||
PICK_BACKUP,
|
||||
StorageUtil.getDownloadUri(),
|
||||
false);
|
||||
} else {
|
||||
final String backupFile = dcContext.imexHasBackup(imexDir.getAbsolutePath());
|
||||
if (backupFile != null) {
|
||||
|
||||
@@ -445,7 +445,7 @@ public class AttachmentManager {
|
||||
}
|
||||
|
||||
public static void selectDocument(Activity activity, int requestCode) {
|
||||
selectMediaType(activity, "*/*", null, requestCode);
|
||||
selectMediaType(activity, "*/*", null, requestCode, null, true);
|
||||
}
|
||||
|
||||
public static void selectWebxdc(Activity activity, int requestCode) {
|
||||
@@ -483,7 +483,7 @@ public class AttachmentManager {
|
||||
.ifNecessary()
|
||||
.withPermanentDenialDialog(
|
||||
activity.getString(R.string.perm_explain_access_to_storage_denied))
|
||||
.onAllGranted(() -> selectMediaType(activity, "image/*", null, requestCode))
|
||||
.onAllGranted(() -> selectMediaType(activity, "image/*", null, requestCode, null, false))
|
||||
.execute();
|
||||
}
|
||||
|
||||
@@ -608,20 +608,6 @@ public class AttachmentManager {
|
||||
.execute();
|
||||
}
|
||||
|
||||
public static void selectMediaType(
|
||||
Activity activity, @NonNull String type, @Nullable String[] extraMimeType, int requestCode) {
|
||||
selectMediaType(activity, type, extraMimeType, requestCode, null, false);
|
||||
}
|
||||
|
||||
public static void selectMediaType(
|
||||
Activity activity,
|
||||
@NonNull String type,
|
||||
@Nullable String[] extraMimeType,
|
||||
int requestCode,
|
||||
@Nullable Uri initialUri) {
|
||||
selectMediaType(activity, type, extraMimeType, requestCode, initialUri, false);
|
||||
}
|
||||
|
||||
public static void selectMediaType(
|
||||
Activity activity,
|
||||
@NonNull String type,
|
||||
|
||||
Reference in New Issue
Block a user