소스 검색

Merge branch 'fixCopyFileNoStoragePermissionCrash' into 'master'

修正複製檔案時因缺少權限而閃退

See merge request kdanandroid/pdf/pdfreaderreadermodule!45
Wayne Huang 5 년 전
부모
커밋
1b29846c80

+ 1 - 2
src/main/java/com/kdanmobile/reader/copyfile/CopyFileActivity.kt

@@ -25,8 +25,7 @@ abstract class CopyFileActivity : KdanBaseActivity(), ReadModuleKoinComponent {
 
     private val viewModel: CopyFileViewModel by viewModel {
         val kdanPdfReaderFolder = getKdanPdfReaderFolder().apply { if (!exists()) mkdirs() }
-        val info = CopyFileInfoFactory().createInfo(this, intent, kdanPdfReaderFolder)
-        parametersOf(applicationContext, info, kdanPdfReaderFolder)
+        parametersOf(applicationContext, intent, kdanPdfReaderFolder)
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {

+ 1 - 2
src/main/java/com/kdanmobile/reader/copyfile/CopyFileInfoFactory.kt

@@ -5,7 +5,6 @@ import android.content.Intent
 import android.net.Uri
 import com.kdanmobile.reader.utils.UriToPathUtil
 import java.io.File
-import java.io.FileNotFoundException
 import java.net.URLEncoder
 
 /**
@@ -107,7 +106,7 @@ class CopyFileInfoFactory {
             val assetFileDescriptor = applicationContext.contentResolver.openAssetFileDescriptor(fileUri, "r")
             assetFileDescriptor?.close()
             true
-        } catch (e: FileNotFoundException) {
+        } catch (e: Exception) {
             false
         }
     }

+ 3 - 1
src/main/java/com/kdanmobile/reader/copyfile/CopyFileViewModel.kt

@@ -4,6 +4,7 @@ import android.arch.lifecycle.LiveData
 import android.arch.lifecycle.MutableLiveData
 import android.arch.lifecycle.ViewModel
 import android.content.Context
+import android.content.Intent
 import com.kdanmobile.reader.event.EventBroadcaster
 import com.kdanmobile.reader.event.EventManager
 import com.kdanmobile.reader.thumb.FileUtil
@@ -29,7 +30,7 @@ import java.lang.Exception
 */
 
 class CopyFileViewModel(applicationContext: Context,
-                        private val info: CopyFileInfo,
+                        private val intent: Intent,
                         private val copiedFileFolder: File,
                         private val eventManager: EventManager<Event> = EventManager()
 ): ViewModel(), EventBroadcaster<CopyFileViewModel.Event> by eventManager {
@@ -54,6 +55,7 @@ class CopyFileViewModel(applicationContext: Context,
     }
 
     fun copyFile(applicationContext: Context) {
+        val info = CopyFileInfoFactory().createInfo(applicationContext, intent, copiedFileFolder)
         if (!info.shouldCopyFile) {
             onCopySuccess()
             return

+ 3 - 2
src/main/java/com/kdanmobile/reader/koin/KoinModule.kt

@@ -1,6 +1,7 @@
 package com.kdanmobile.reader.koin
 
 import android.content.Context
+import android.content.Intent
 import com.kdanmobile.reader.copyfile.CopyFileViewModel
 import com.kdanmobile.reader.copyfile.CopyFileInfo
 import android.net.Uri
@@ -16,8 +17,8 @@ import java.io.File
 internal object KoinModule {
     val m = module {
         single { ReaderModelManager() }
-        viewModel { (applicationContext: Context, info: CopyFileInfo, copiedFileFolder: File) ->
-            CopyFileViewModel(applicationContext, info, copiedFileFolder)
+        viewModel { (applicationContext: Context, intent: Intent, copiedFileFolder: File) ->
+            CopyFileViewModel(applicationContext, intent, copiedFileFolder)
         }
         viewModel { (uri: Uri) ->
             ReaderViewModel(