#1520 Catch IllegalArgumentException

This commit is contained in:
Sean Mac Gillicuddy 2019-09-26 11:30:20 +01:00
parent cca60df69f
commit 7fbbf842fd

View File

@ -17,10 +17,12 @@
*/ */
package org.kiwix.kiwixmobile.utils.files package org.kiwix.kiwixmobile.utils.files
import android.annotation.TargetApi
import android.content.ContentUris import android.content.ContentUris
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Build.VERSION_CODES
import android.os.Environment import android.os.Environment
import android.provider.DocumentsContract import android.provider.DocumentsContract
import android.util.Log import android.util.Log
@ -160,19 +162,12 @@ object FileUtils {
if (documentId[0] == "primary") { if (documentId[0] == "primary") {
return "${Environment.getExternalStorageDirectory()}/${documentId[1]}" return "${Environment.getExternalStorageDirectory()}/${documentId[1]}"
} }
} else if ("com.android.providers.downloads.documents" == uri.authority } else if ("com.android.providers.downloads.documents" == uri.authority)
) return try {
return contentQuery( documentProviderContentQuery(ctx, uri)
ctx, } catch (ignore: IllegalArgumentException) {
ContentUris.withAppendedId( null
Uri.parse("content://downloads/public_downloads"), }
try {
DocumentsContract.getDocumentId(uri).toLong()
} catch (ignore: NumberFormatException) {
0L
}
)
)
} else if ("content".equals(uri.scheme!!, ignoreCase = true)) { } else if ("content".equals(uri.scheme!!, ignoreCase = true)) {
return contentQuery(ctx, uri) return contentQuery(ctx, uri)
} else if ("file".equals(uri.scheme!!, ignoreCase = true)) { } else if ("file".equals(uri.scheme!!, ignoreCase = true)) {
@ -181,6 +176,20 @@ object FileUtils {
return null return null
} }
@TargetApi(VERSION_CODES.KITKAT)
private fun documentProviderContentQuery(ctx: Context, uri: Uri) =
contentQuery(
ctx,
ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"),
try {
DocumentsContract.getDocumentId(uri).toLong()
} catch (ignore: NumberFormatException) {
0L
}
)
)
private fun contentQuery( private fun contentQuery(
context: Context, context: Context,
uri: Uri uri: Uri