Skip to content

Commit f7fc5c0

Browse files
committed
reuse some third party intents from the Commons library
1 parent 9b675ba commit f7fc5c0

File tree

4 files changed

+37
-82
lines changed

4 files changed

+37
-82
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ android {
3737
}
3838

3939
dependencies {
40-
compile 'com.simplemobiletools:commons:2.33.2'
40+
compile 'com.simplemobiletools:commons:2.33.8'
4141
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
4242
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
4343

app/src/main/kotlin/com/simplemobiletools/filemanager/adapters/ItemsAdapter.kt

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.simplemobiletools.filemanager.adapters
22

3-
import android.content.Intent
43
import android.graphics.drawable.Drawable
54
import android.net.Uri
65
import android.os.Build
7-
import android.os.TransactionTooLargeException
86
import android.support.v7.view.ActionMode
97
import android.support.v7.widget.RecyclerView
108
import android.util.SparseArray
@@ -29,6 +27,7 @@ import com.simplemobiletools.filemanager.dialogs.CompressAsDialog
2927
import com.simplemobiletools.filemanager.extensions.config
3028
import com.simplemobiletools.filemanager.extensions.isPathOnRoot
3129
import com.simplemobiletools.filemanager.extensions.isZipFile
30+
import com.simplemobiletools.filemanager.extensions.shareUris
3231
import com.stericson.RootTools.RootTools
3332
import kotlinx.android.synthetic.main.list_item.view.*
3433
import java.io.Closeable
@@ -171,35 +170,9 @@ class ItemsAdapter(val activity: SimpleActivity, var mItems: MutableList<FileDir
171170
val selectedItems = getSelectedMedia()
172171
val uris = ArrayList<Uri>(selectedItems.size)
173172
selectedItems.forEach {
174-
val file = File(it.path)
175-
addFileUris(file, uris)
176-
}
177-
178-
if (uris.isEmpty()) {
179-
activity.toast(R.string.no_files_selected)
180-
return
181-
}
182-
183-
val shareTitle = activity.resources.getString(R.string.share_via)
184-
Intent().apply {
185-
if (uris.size <= 1) {
186-
action = Intent.ACTION_SEND
187-
putExtra(Intent.EXTRA_STREAM, uris.first())
188-
} else {
189-
action = Intent.ACTION_SEND_MULTIPLE
190-
putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
191-
}
192-
type = uris.getMimeType()
193-
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
194-
195-
try {
196-
activity.startActivity(Intent.createChooser(this, shareTitle))
197-
} catch (e: TransactionTooLargeException) {
198-
activity.toast(R.string.maximum_share_reached)
199-
} catch (exception: Exception) {
200-
activity.showErrorToast(exception.cause.toString())
201-
}
173+
addFileUris(File(it.path), uris)
202174
}
175+
activity.shareUris(uris)
203176
}
204177

205178
private fun addFileUris(file: File, uris: ArrayList<Uri>) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.simplemobiletools.filemanager.extensions
2+
3+
import android.app.Activity
4+
import android.net.Uri
5+
import com.simplemobiletools.commons.extensions.openFile
6+
import com.simplemobiletools.commons.extensions.shareUri
7+
import com.simplemobiletools.commons.extensions.shareUris
8+
import com.simplemobiletools.filemanager.BuildConfig
9+
import java.util.*
10+
11+
12+
fun Activity.shareUri(uri: Uri) {
13+
shareUri(uri, BuildConfig.APPLICATION_ID)
14+
}
15+
16+
fun Activity.shareUris(uris: ArrayList<Uri>) {
17+
if (uris.size == 1) {
18+
shareUri(uris.first())
19+
} else {
20+
shareUris(uris, BuildConfig.APPLICATION_ID)
21+
}
22+
}
23+
24+
fun Activity.openFile(uri: Uri, forceChooser: Boolean) {
25+
openFile(uri, forceChooser, BuildConfig.APPLICATION_ID)
26+
}

app/src/main/kotlin/com/simplemobiletools/filemanager/fragments/ItemsFragment.kt

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.simplemobiletools.filemanager.fragments
22

3-
import android.content.ActivityNotFoundException
4-
import android.content.Intent
53
import android.net.Uri
64
import android.os.Bundle
75
import android.os.Parcelable
@@ -12,19 +10,21 @@ import android.view.LayoutInflater
1210
import android.view.View
1311
import android.view.ViewGroup
1412
import com.simplemobiletools.commons.dialogs.StoragePickerDialog
15-
import com.simplemobiletools.commons.extensions.*
16-
import com.simplemobiletools.commons.helpers.REAL_FILE_PATH
13+
import com.simplemobiletools.commons.extensions.deleteFiles
14+
import com.simplemobiletools.commons.extensions.getFilenameFromPath
15+
import com.simplemobiletools.commons.extensions.toast
16+
import com.simplemobiletools.commons.extensions.updateTextColors
1717
import com.simplemobiletools.commons.models.FileDirItem
1818
import com.simplemobiletools.commons.views.Breadcrumbs
1919
import com.simplemobiletools.commons.views.MyScalableRecyclerView
20-
import com.simplemobiletools.filemanager.BuildConfig
2120
import com.simplemobiletools.filemanager.R
2221
import com.simplemobiletools.filemanager.activities.MainActivity
2322
import com.simplemobiletools.filemanager.activities.SimpleActivity
2423
import com.simplemobiletools.filemanager.adapters.ItemsAdapter
2524
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
2625
import com.simplemobiletools.filemanager.extensions.config
2726
import com.simplemobiletools.filemanager.extensions.isPathOnRoot
27+
import com.simplemobiletools.filemanager.extensions.openFile
2828
import com.simplemobiletools.filemanager.helpers.RootHelpers
2929
import com.stericson.RootTools.RootTools
3030
import kotlinx.android.synthetic.main.items_fragment.*
@@ -224,48 +224,12 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
224224
if (isGetContentIntent) {
225225
(activity as MainActivity).pickedPath(path)
226226
} else {
227-
fileClicked(path)
227+
val file = File(path)
228+
activity.openFile(Uri.fromFile(file), false)
228229
}
229230
}
230231
}
231232

232-
private fun fileClicked(path: String) {
233-
val file = File(path)
234-
val mimeType = path.getMimeTypeFromPath()
235-
236-
val uri = context.getFilePublicUri(file, BuildConfig.APPLICATION_ID)
237-
Intent(Intent.ACTION_VIEW).apply {
238-
setDataAndType(uri, mimeType)
239-
flags = Intent.FLAG_ACTIVITY_NEW_TASK
240-
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
241-
242-
if (context.isNougatPlus()) {
243-
putExtra(REAL_FILE_PATH, Uri.fromFile(file))
244-
}
245-
246-
try {
247-
startActivity(this)
248-
} catch (e: ActivityNotFoundException) {
249-
if (!tryGenericMimeType(this, mimeType, file)) {
250-
activity.toast(R.string.no_app_found)
251-
}
252-
}
253-
}
254-
}
255-
256-
private fun tryGenericMimeType(intent: Intent, mimeType: String, file: File): Boolean {
257-
val uri = context.getFilePublicUri(file, BuildConfig.APPLICATION_ID)
258-
val genericMimeType = getGenericMimeType(mimeType)
259-
intent.setDataAndType(uri, genericMimeType)
260-
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
261-
return try {
262-
startActivity(intent)
263-
true
264-
} catch (e: ActivityNotFoundException) {
265-
false
266-
}
267-
}
268-
269233
private fun createNewItem() {
270234
CreateNewItemDialog(activity as SimpleActivity, currentPath) {
271235
if (it) {
@@ -274,14 +238,6 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener, Breadcrum
274238
}
275239
}
276240

277-
private fun getGenericMimeType(mimeType: String): String {
278-
if (!mimeType.contains("/"))
279-
return mimeType
280-
281-
val type = mimeType.substring(0, mimeType.indexOf("/"))
282-
return "$type/*"
283-
}
284-
285241
override fun breadcrumbClicked(id: Int) {
286242
if (id == 0) {
287243
StoragePickerDialog(activity, currentPath) {

0 commit comments

Comments
 (0)