From 7bdef7c68615cd406f769184b7c62e3ae260a33a Mon Sep 17 00:00:00 2001 From: Brieuc Viel Date: Thu, 24 Aug 2017 17:09:51 +0200 Subject: [PATCH] [File sharing] fix opening file shared if known extension --- src/android/org/linphone/ChatFragment.java | 26 ++++++++++++++++--- .../org/linphone/LinphoneActivity.java | 2 -- .../linphone/LinphoneLauncherActivity.java | 3 +-- submodules/externals/openh264 | 2 +- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/android/org/linphone/ChatFragment.java b/src/android/org/linphone/ChatFragment.java index d7d59abf1..c4a36b578 100644 --- a/src/android/org/linphone/ChatFragment.java +++ b/src/android/org/linphone/ChatFragment.java @@ -61,6 +61,7 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import android.webkit.MimeTypeMap; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.CheckBox; @@ -1611,10 +1612,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC if (extension.length() > 4) extension = extension.substring(0, 3); - //holder.messageImage.setImageResource(R.drawable.chat_attachment); holder.fileExtensionLabel.setText(extension); holder.fileExtensionLabel.setVisibility(View.VISIBLE); - //holder.fileExtensionLabel.setTag(message.getAppData()); holder.fileNameLabel.setText(LinphoneUtils.getNameFromFilePath(message.getAppData())); holder.fileNameLabel.setVisibility(View.VISIBLE); holder.fileExtensionLabel.setOnClickListener(new OnClickListener() { @@ -1634,6 +1633,16 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC file = new File(imageUri); contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); } + String type = null; + String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString()); + if (extension != null) { + type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + } + if(type != null) { + intent.setDataAndType(contentUri, type); + }else { + intent.setDataAndType(contentUri, "*/*"); + } intent.setDataAndType(contentUri, "*/*"); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); context.startActivity(intent); @@ -1841,8 +1850,17 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC file = new File(imageUri); contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); } - intent.setDataAndType(contentUri, "*/*"); - intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); + String type = null; + String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString()); + if (extension != null) { + type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + } + if(type != null) { + intent.setDataAndType(contentUri, type); + }else { + intent.setDataAndType(contentUri, "*/*"); + } + intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); context.startActivity(intent); } }); diff --git a/src/android/org/linphone/LinphoneActivity.java b/src/android/org/linphone/LinphoneActivity.java index d22d3fb04..c517c35a4 100644 --- a/src/android/org/linphone/LinphoneActivity.java +++ b/src/android/org/linphone/LinphoneActivity.java @@ -1285,8 +1285,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick ContactsManager.getInstance().enableContactsAccess(); if (!ContactsManager.getInstance().contactsFetchedOnce()) { ContactsManager.getInstance().enableContactsAccess(); - - Log.e(" ====>>>> LinphoneActivity - ContactsManager.getInstance().fetchContactsAsync() 1 !!!"); ContactsManager.getInstance().fetchContactsAsync(); } } diff --git a/src/android/org/linphone/LinphoneLauncherActivity.java b/src/android/org/linphone/LinphoneLauncherActivity.java index cc6f0be95..708031f15 100644 --- a/src/android/org/linphone/LinphoneLauncherActivity.java +++ b/src/android/org/linphone/LinphoneLauncherActivity.java @@ -121,7 +121,7 @@ public class LinphoneLauncherActivity extends Activity { stringFileShared = intent.getStringExtra(Intent.EXTRA_TEXT); newIntent.putExtra("msgShared", stringFileShared); } else if(((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)) != null){ - stringFileShared = ((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)).getPath(); + //stringFileShared = ((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)).getPath(); stringFileShared = (LinphoneUtils.createCvsFromString(LinphoneUtils.processContactUri(getApplicationContext(), (Uri)intent.getExtras().get(Intent.EXTRA_STREAM)))).toString(); newIntent.putExtra("fileShared", stringFileShared); } @@ -136,7 +136,6 @@ public class LinphoneLauncherActivity extends Activity { stringFileShared = LinphoneUtils.getFilePath(getBaseContext(), fileUri); else stringFileShared = fileUri.getPath(); - } newIntent.putExtra("fileShared", stringFileShared); } diff --git a/submodules/externals/openh264 b/submodules/externals/openh264 index a180c9d4d..9e75838c8 160000 --- a/submodules/externals/openh264 +++ b/submodules/externals/openh264 @@ -1 +1 @@ -Subproject commit a180c9d4d6f1a4830ca9eed9d159d54996bd63cb +Subproject commit 9e75838c8638c48a32b15c73c9da7b1fe942fd5f