[FileSharing] update files sharing to fix some issues + add new String error

This commit is contained in:
Brieuc Viel 2017-10-20 11:28:57 +02:00
parent f34db59d07
commit 3580f770e9
3 changed files with 51 additions and 28 deletions

View file

@ -189,6 +189,7 @@
<string name="displayed">Read</string> <string name="displayed">Read</string>
<string name="delivered">Delivered</string> <string name="delivered">Delivered</string>
<string name="resend">Resend</string> <string name="resend">Resend</string>
<string name="error_opening_file">An error occurs when opening this file.</string>
<!-- Status Bar --> <!-- Status Bar -->
<string name="status_connected">Registered</string> <string name="status_connected">Registered</string>

View file

@ -782,7 +782,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
private void sendImageMessage(String path, int imageSize) { private void sendImageMessage(String path, int imageSize) {
if(path.contains("file://")) { if(path.contains("file://")) {
path = path.substring(7); path = path.split("file:///", 2)[1];
} }
if(path.contains("%20")) { if(path.contains("%20")) {
path = path.replace("%20", "-"); path = path.replace("%20", "-");
@ -815,7 +815,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
private void sendFileSharingMessage(String path, int size ) { private void sendFileSharingMessage(String path, int size ) {
if (path.contains("file://")) { if (path.contains("file://")) {
path = path.substring(7); path = path.split("file:///", 2)[1];
} else if (path.contains("com.android.contacts/contacts/")) { } else if (path.contains("com.android.contacts/contacts/")) {
path = getCVSPathFromLookupUri(path).toString(); path = getCVSPathFromLookupUri(path).toString();
} else if (path.contains("vcard") || path.contains("vcf")) { } else if (path.contains("vcard") || path.contains("vcf")) {
@ -1676,20 +1676,29 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
contentUri = Uri.parse(imageUri); contentUri = Uri.parse(imageUri);
} else { } else {
file = new File(imageUri); file = new File(imageUri);
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); try {
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file);
}catch(java.lang.IllegalArgumentException e){
Log.e("Something wrong happend : "+e);
contentUri = null;
}
} }
String type = null; String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString()); if(contentUri != null) {
if (extension != null) { String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString());
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 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);
}else{
LinphoneActivity.instance().displayCustomToast(getString(R.string.error_opening_file), Toast.LENGTH_LONG);
} }
if(type != null) {
intent.setDataAndType(contentUri, type);
}else {
intent.setDataAndType(contentUri, "*/*");
}
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
} }
}); });
} }
@ -1901,20 +1910,29 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
contentUri = Uri.parse(imageUri); contentUri = Uri.parse(imageUri);
} else { } else {
file = new File(imageUri); file = new File(imageUri);
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); try {
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file);
}catch(java.lang.IllegalArgumentException e){
Log.e("Something wrong happend : "+e);
contentUri = null;
}
} }
String type = null; String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString()); if(contentUri != null) {
if (extension != null) { String extension = MimeTypeMap.getFileExtensionFromUrl(contentUri.toString());
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); if (extension != null) {
} type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
if(type != null) { }
intent.setDataAndType(contentUri, type); if (type != null) {
}else { intent.setDataAndType(contentUri, type);
intent.setDataAndType(contentUri, "*/*"); } else {
} intent.setDataAndType(contentUri, "*/*");
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); }
context.startActivity(intent); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
}else{
LinphoneActivity.instance().displayCustomToast(getString(R.string.error_opening_file), Toast.LENGTH_LONG);
}
} }
}); });
} }

View file

@ -126,7 +126,7 @@ public class LinphoneLauncherActivity extends Activity {
newIntent.setData(intent.getData()); newIntent.setData(intent.getData());
if (Intent.ACTION_SEND.equals(action) && type != null) { if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.contains("text/")){ if (type.contains("text/")){
if(("text/plain").equals(type) && intent.getStringExtra(Intent.EXTRA_TEXT)!= null) { if(("text/plain").equals(type) && (String)intent.getStringExtra(Intent.EXTRA_TEXT)!= null) {
stringFileShared = intent.getStringExtra(Intent.EXTRA_TEXT); stringFileShared = intent.getStringExtra(Intent.EXTRA_TEXT);
newIntent.putExtra("msgShared", stringFileShared); newIntent.putExtra("msgShared", stringFileShared);
} else if(((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)) != null){ } else if(((Uri) intent.getExtras().get(Intent.EXTRA_STREAM)) != null){
@ -134,19 +134,23 @@ public class LinphoneLauncherActivity extends Activity {
newIntent.putExtra("fileShared", stringFileShared); newIntent.putExtra("fileShared", stringFileShared);
} }
}else { }else {
if(intent.getStringExtra(Intent.EXTRA_STREAM) != null){ if(((String) intent.getStringExtra(Intent.EXTRA_STREAM)) != null){
stringUriFileShared = intent.getStringExtra(Intent.EXTRA_STREAM); stringUriFileShared = intent.getStringExtra(Intent.EXTRA_STREAM);
}else { }else {
fileUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); fileUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
stringUriFileShared = LinphoneUtils.getRealPathFromURI(getBaseContext(), fileUri); stringUriFileShared = LinphoneUtils.getRealPathFromURI(getBaseContext(), fileUri);
if(stringUriFileShared == null) if(stringUriFileShared == null)
if(fileUri.getPath().contains("/0/1/mediakey:/local")) { if(fileUri.getPath().contains("/0/1/mediakey:/local") || fileUri.getPath().contains("/ORIGINAL/NONE/")) {
stringUriFileShared = LinphoneUtils.getFilePath(getBaseContext(), fileUri); stringUriFileShared = LinphoneUtils.getFilePath(getBaseContext(), fileUri);
}else }else
stringUriFileShared = fileUri.getPath(); stringUriFileShared = fileUri.getPath();
} }
newIntent.putExtra("fileShared", stringUriFileShared); newIntent.putExtra("fileShared", stringUriFileShared);
} }
}else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
if (type.startsWith("image/")) {
//TODO : Manage multiple files sharing
}
}else if( ACTION_CALL_LINPHONE.equals(action) && (intent.getStringExtra("NumberToCall") != null)) { }else if( ACTION_CALL_LINPHONE.equals(action) && (intent.getStringExtra("NumberToCall") != null)) {
String numberToCall = intent.getStringExtra("NumberToCall"); String numberToCall = intent.getStringExtra("NumberToCall");
if (CallActivity.isInstanciated()) { if (CallActivity.isInstanciated()) {