From 53d83a49f8766ea354bc5c52a4c4809904c54fef Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 25 Oct 2017 16:07:45 +0200 Subject: [PATCH] Added back code to handle Vcf sharing --- .../org/linphone/chat/GroupChatFragment.java | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 651ea6dea..b14cdbd85 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -24,7 +24,6 @@ import android.app.Dialog; import android.app.Fragment; import android.content.CursorLoader; import android.content.Intent; -import android.content.res.Configuration; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -66,6 +65,8 @@ import org.linphone.core.ChatRoomListener; import org.linphone.core.Content; import org.linphone.core.Core; import org.linphone.core.EventLog; +import org.linphone.core.Friend; +import org.linphone.core.FriendList; import org.linphone.core.Participant; import org.linphone.receivers.ContactsUpdatedListener; @@ -275,16 +276,16 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con if (requestCode == ADD_PHOTO && resultCode == Activity.RESULT_OK) { String fileToUploadPath = null; if (data != null && data.getData() != null) { - /*if (data.getData().toString().contains("com.android.contacts/contacts/")) { - if (getCVSPathFromLookupUri(data.getData()) != null) { - fileToUploadPath = getCVSPathFromLookupUri(data.getData()).toString(); + if (data.getData().toString().contains("com.android.contacts/contacts/")) { + if (getCVSPathFromLookupUri(data.getData().toString()) != null) { + fileToUploadPath = getCVSPathFromLookupUri(data.getData().toString()).toString(); } else { - LinphoneActivity.instance().displayCustomToast("Something wrong happened", Toast.LENGTH_LONG); + //TODO Error return; } } else { fileToUploadPath = getRealPathFromURI(data.getData()); - }*/ + } fileToUploadPath = getRealPathFromURI(data.getData()); if (fileToUploadPath == null) { fileToUploadPath = data.getData().toString(); @@ -294,10 +295,11 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } if (LinphoneUtils.isExtensionImage(fileToUploadPath)) { addImageToPendingList(fileToUploadPath); - } - else { + } else { if (fileToUploadPath.startsWith("content://")) { fileToUploadPath = LinphoneUtils.getFilePath(this.getActivity().getApplicationContext(), Uri.parse(fileToUploadPath)); + } else if (fileToUploadPath.contains("com.android.contacts/contacts/")) { + fileToUploadPath = getCVSPathFromLookupUri(fileToUploadPath).toString(); } addFileToPendingList(fileToUploadPath); } @@ -354,6 +356,21 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con return null; } + public Uri getCVSPathFromLookupUri(String content) { + String contactId = LinphoneUtils.getNameFromFilePath(content); + FriendList[] friendList = LinphoneManager.getLc().getFriendsLists(); + for (FriendList list : friendList) { + for (Friend friend : list.getFriends()) { + if (friend.getRefKey().toString().equals(contactId)) { + String contactVcard = friend.getVcard().asVcard4String(); + Uri path = LinphoneUtils.createCvsFromString(contactVcard); + return path; + } + } + } + return null; + } + private void getContactsForParticipants() { mParticipants = new ArrayList<>(); if (mChatRoom.getNbParticipants() > 1) {