[File sharing] fix opening file shared if known extension

This commit is contained in:
Brieuc Viel 2017-08-24 17:09:51 +02:00
parent f06de68fe1
commit 7bdef7c686
4 changed files with 24 additions and 9 deletions

View file

@ -61,6 +61,7 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.webkit.MimeTypeMap;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
@ -1611,10 +1612,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
if (extension.length() > 4) if (extension.length() > 4)
extension = extension.substring(0, 3); extension = extension.substring(0, 3);
//holder.messageImage.setImageResource(R.drawable.chat_attachment);
holder.fileExtensionLabel.setText(extension); holder.fileExtensionLabel.setText(extension);
holder.fileExtensionLabel.setVisibility(View.VISIBLE); holder.fileExtensionLabel.setVisibility(View.VISIBLE);
//holder.fileExtensionLabel.setTag(message.getAppData());
holder.fileNameLabel.setText(LinphoneUtils.getNameFromFilePath(message.getAppData())); holder.fileNameLabel.setText(LinphoneUtils.getNameFromFilePath(message.getAppData()));
holder.fileNameLabel.setVisibility(View.VISIBLE); holder.fileNameLabel.setVisibility(View.VISIBLE);
holder.fileExtensionLabel.setOnClickListener(new OnClickListener() { holder.fileExtensionLabel.setOnClickListener(new OnClickListener() {
@ -1634,6 +1633,16 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
file = new File(imageUri); file = new File(imageUri);
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); 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.setDataAndType(contentUri, "*/*");
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent); context.startActivity(intent);
@ -1841,8 +1850,17 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
file = new File(imageUri); file = new File(imageUri);
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file); contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file);
} }
intent.setDataAndType(contentUri, "*/*"); String type = null;
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION); 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); context.startActivity(intent);
} }
}); });

View file

@ -1285,8 +1285,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
ContactsManager.getInstance().enableContactsAccess(); ContactsManager.getInstance().enableContactsAccess();
if (!ContactsManager.getInstance().contactsFetchedOnce()) { if (!ContactsManager.getInstance().contactsFetchedOnce()) {
ContactsManager.getInstance().enableContactsAccess(); ContactsManager.getInstance().enableContactsAccess();
Log.e(" ====>>>> LinphoneActivity - ContactsManager.getInstance().fetchContactsAsync() 1 !!!");
ContactsManager.getInstance().fetchContactsAsync(); ContactsManager.getInstance().fetchContactsAsync();
} }
} }

View file

@ -121,7 +121,7 @@ public class LinphoneLauncherActivity extends Activity {
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){
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(); stringFileShared = (LinphoneUtils.createCvsFromString(LinphoneUtils.processContactUri(getApplicationContext(), (Uri)intent.getExtras().get(Intent.EXTRA_STREAM)))).toString();
newIntent.putExtra("fileShared", stringFileShared); newIntent.putExtra("fileShared", stringFileShared);
} }
@ -136,7 +136,6 @@ public class LinphoneLauncherActivity extends Activity {
stringFileShared = LinphoneUtils.getFilePath(getBaseContext(), fileUri); stringFileShared = LinphoneUtils.getFilePath(getBaseContext(), fileUri);
else else
stringFileShared = fileUri.getPath(); stringFileShared = fileUri.getPath();
} }
newIntent.putExtra("fileShared", stringFileShared); newIntent.putExtra("fileShared", stringFileShared);
} }

@ -1 +1 @@
Subproject commit a180c9d4d6f1a4830ca9eed9d159d54996bd63cb Subproject commit 9e75838c8638c48a32b15c73c9da7b1fe942fd5f