From 3a1a1f7102bfaf7600e4f5c47eb374bc7c9f8c26 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 19 Feb 2019 16:12:18 +0100 Subject: [PATCH] Allow multiple image sharing through linphone --- app/src/main/AndroidManifest.xml | 8 +++++ .../linphone/LinphoneLauncherActivity.java | 10 +++++- .../linphone/chat/ChatMessagesFragment.java | 33 ++++++++++++------- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 62031a373..62607fc2d 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -109,6 +109,14 @@ + + + + + + + + diff --git a/app/src/main/java/org/linphone/LinphoneLauncherActivity.java b/app/src/main/java/org/linphone/LinphoneLauncherActivity.java index a1eecc243..6ff4f5782 100644 --- a/app/src/main/java/org/linphone/LinphoneLauncherActivity.java +++ b/app/src/main/java/org/linphone/LinphoneLauncherActivity.java @@ -28,6 +28,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.util.Log; +import java.util.ArrayList; import org.linphone.assistant.RemoteProvisioningActivity; import org.linphone.call.CallActivity; import org.linphone.contacts.ContactsManager; @@ -129,7 +130,14 @@ public class LinphoneLauncherActivity extends Activity { } } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) { if (type.startsWith("image/")) { - // TODO : Manage multiple files sharing + ArrayList imageUris = + intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); + String filePaths = ""; + for (Uri uri : imageUris) { + filePaths += FileUtils.getFilePath(getBaseContext(), uri); + filePaths += ":"; + } + newIntent.putExtra("fileShared", filePaths); } } else if (ACTION_CALL_LINPHONE.equals(action) && (intent.getStringExtra("NumberToCall") != null)) { diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index dbcbbf338..e2d41c1f9 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -316,19 +316,13 @@ public class ChatMessagesFragment extends Fragment if (getArguments() != null) { String fileSharedUri = getArguments().getString("fileSharedUri"); if (fileSharedUri != null) { - if (FileUtils.isExtensionImage(fileSharedUri)) { - addImageToPendingList(fileSharedUri); - } else { - if (fileSharedUri.startsWith("content://") - || fileSharedUri.startsWith("file://")) { - fileSharedUri = - FileUtils.getFilePath( - getActivity().getApplicationContext(), - Uri.parse(fileSharedUri)); - } else if (fileSharedUri.contains("com.android.contacts/contacts/")) { - fileSharedUri = FileUtils.getCVSPathFromLookupUri(fileSharedUri).toString(); + if (fileSharedUri.contains(":")) { + String[] files = fileSharedUri.split(":"); + for (String file : files) { + addFileIntoSharingArea(file); } - addFileToPendingList(fileSharedUri); + } else { + addFileIntoSharingArea(fileSharedUri); } } @@ -580,6 +574,21 @@ public class ChatMessagesFragment extends Fragment return super.onContextItemSelected(item); } + private void addFileIntoSharingArea(String fileSharedUri) { + if (FileUtils.isExtensionImage(fileSharedUri)) { + addImageToPendingList(fileSharedUri); + } else { + if (fileSharedUri.startsWith("content://") || fileSharedUri.startsWith("file://")) { + fileSharedUri = + FileUtils.getFilePath( + getActivity().getApplicationContext(), Uri.parse(fileSharedUri)); + } else if (fileSharedUri.contains("com.android.contacts/contacts/")) { + fileSharedUri = FileUtils.getCVSPathFromLookupUri(fileSharedUri).toString(); + } + addFileToPendingList(fileSharedUri); + } + } + private void loadMoreData(final int totalItemsCount) { mHandler.post( new Runnable() {