From b6f642a51878dde43c0c774a988f556da899deaf Mon Sep 17 00:00:00 2001 From: Brieuc Viel Date: Wed, 23 Aug 2017 15:49:16 +0200 Subject: [PATCH] [File sharing] update sharing contact + navigation issue --- AndroidManifest.xml | 2 +- src/android/org/linphone/ChatFragment.java | 26 +++++++++++++++++-- .../linphone/LinphoneLauncherActivity.java | 15 ++++++++--- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9b7cdbe06..10968ef34 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -112,7 +112,7 @@ - + diff --git a/src/android/org/linphone/ChatFragment.java b/src/android/org/linphone/ChatFragment.java index a2da04e0a..20841d4e6 100644 --- a/src/android/org/linphone/ChatFragment.java +++ b/src/android/org/linphone/ChatFragment.java @@ -683,10 +683,23 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC LinphoneActivity.instance().setAddresGoToDialerAndCall(sipUri, LinphoneUtils.getUsernameFromAddress(sipUri), null); } if (id == R.id.back) { + cleanIntentAndFiles(); getFragmentManager().popBackStackImmediate(); } } + private void cleanIntentAndFiles() { + if (getArguments().getString("fileSharedUri") != null){ + getArguments().remove("fileSharedUri"); + fileSharedUri = null; + } + message.setText(""); + if (getArguments().getString("messageDraft") != null) + getArguments().remove("messageDraft"); + + this.getArguments().clear(); + } + private void sendTextMessage() { if (!LinphoneManager.isInstanciated() || LinphoneManager.getLc() == null) return; @@ -774,6 +787,11 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC private void sendFileSharingMessage(String path, int size ) { if(path.contains("file://")) { path = path.substring(7); + }else if(path.contains("com.android.contacts/contacts/")){ + Log.e("===>>> ChatFragment - sendFileSharingMessage : path = "+path); + path = getCVSPathFromLookupUri(path).toString(); + }else if(path.contains(".vcf")){ + //TODO : do something } LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); @@ -926,7 +944,11 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC } public Uri getCVSPathFromLookupUri(Uri contentUri) { - String contactId = LinphoneUtils.getNameFromFilePath(contentUri.getPath()); + return getCVSPathFromLookupUri(contentUri.getPath()); + } + + public Uri getCVSPathFromLookupUri(String content) { + String contactId = LinphoneUtils.getNameFromFilePath(content); LinphoneFriend[] friendList = LinphoneManager.getLc().getFriendList(); for(LinphoneFriend friend : friendList){ if(friend.getRefKey().toString().equals(contactId)) { @@ -953,7 +975,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC @Override public void onContactsUpdated() { - if(fileSharedUri != null){ + if(fileSharedUri != null || message.getText() != null){ initNewChatConversation(); } } diff --git a/src/android/org/linphone/LinphoneLauncherActivity.java b/src/android/org/linphone/LinphoneLauncherActivity.java index 174e473f8..6ef54e503 100644 --- a/src/android/org/linphone/LinphoneLauncherActivity.java +++ b/src/android/org/linphone/LinphoneLauncherActivity.java @@ -116,9 +116,18 @@ public class LinphoneLauncherActivity extends Activity { String type = intent.getType(); newIntent.setData(intent.getData()); if (Intent.ACTION_SEND.equals(action) && type != null) { - if ("text/plain".equals(type) && intent.getStringExtra(Intent.EXTRA_TEXT) != null) { - stringFileShared = intent.getStringExtra(Intent.EXTRA_TEXT); - newIntent.putExtra("msgShared", stringFileShared); + Log.e("====>>> LinphoneLauncherActivity : onServiceReady - type = "+type); + if (type.contains("text/")){ //&& intent.getStringExtra(Intent.EXTRA_TEXT) != null) { + + if(("text/plain").equals(type) && intent.getStringExtra(Intent.EXTRA_TEXT)!= null) { + stringFileShared = intent.getStringExtra(Intent.EXTRA_TEXT); + Log.e("====>>> LinphoneLauncherActivity : onServiceReady - stringText = "+stringFileShared); + newIntent.putExtra("msgShared", stringFileShared); + } else if(((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)) != null){ + stringFileShared = ((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)).getPath(); + Log.e("====>>> LinphoneLauncherActivity : onServiceReady - stringFileShared = "+stringFileShared); + newIntent.putExtra("fileShared", stringFileShared); + } }else { if(intent.getStringExtra(Intent.EXTRA_STREAM) != null){ stringFileShared = intent.getStringExtra(Intent.EXTRA_STREAM);