ViewMediaActivity: add a button to open media file in external application just in case built-in fails

This commit is contained in:
Alibek Omarov 2020-06-25 18:33:35 +03:00
parent c062e9c180
commit 3e9c568e76
4 changed files with 29 additions and 0 deletions

View File

@ -142,6 +142,7 @@ class ViewMediaActivity : BaseActivity(), ViewImageFragment.PhotoActionsListener
toolbar.setNavigationOnClickListener { supportFinishAfterTransition() }
toolbar.setOnMenuItemClickListener { item: MenuItem ->
when (item.itemId) {
R.id.action_open_in_external_app -> openInExternalApp()
R.id.action_download -> requestDownloadMedia()
R.id.action_open_status -> onOpenStatus()
R.id.action_share_media -> shareMedia()
@ -269,6 +270,19 @@ class ViewMediaActivity : BaseActivity(), ViewImageFragment.PhotoActionsListener
startActivity(Intent.createChooser(sendIntent, resources.getText(R.string.send_media_to)))
}
private fun openInExternalApp() {
val url = attachments!![viewPager.currentItem].attachment.url
val intent = Intent(Intent.ACTION_VIEW)
val extension = MimeTypeMap.getFileExtensionFromUrl(url)
if(extension != null) {
intent.setDataAndType(Uri.parse(url), MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension))
} else {
intent.data = Uri.parse(url)
}
startActivity(intent)
}
private var isCreating: Boolean = false

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
</vector>

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_open_in_external_app"
android:icon="@drawable/ic_exit_to_app_24px"
android:title="@string/action_open_in_external_app"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_download"
android:icon="@drawable/ic_file_download_black_24dp"

View File

@ -9,6 +9,7 @@
<string name="action_enable_formatting_syntax">Enable %s</string>
<string name="action_disable_formatting_syntax">Disable %s</string>
<string name="action_sticker">Stickers</string>
<string name="action_open_in_external_app">Open in external app</string>
<string name="title_emoji_reacted_by">%s reacted by</string>