Ver código fonte

Merge branch 'checkCopyFilePermission' into 'master'

CopyFileActivity新增權限檢查

See merge request kdanandroid/pdf/pdfreaderreadermodule!25
Wayne Huang 5 anos atrás
pai
commit
30fd6cdbba

+ 6 - 0
src/main/java/com/kdanmobile/reader/copyfile/CopyFileActivity.kt

@@ -15,6 +15,7 @@ abstract class CopyFileActivity : KdanBaseActivity() {
 
     abstract fun getKdanPdfReaderFolder(): File
     abstract fun provideReaderActivityIntent(filePath: String?): Intent
+    open fun hasPermissionToAccessExternalStorage(): Boolean = true
 
     companion object {
         const val KEY_FILE_ABSOLUTE_PATH = "file_absolute_path"
@@ -58,6 +59,7 @@ abstract class CopyFileActivity : KdanBaseActivity() {
     }
 
     private fun showFileCannotOpenDialog(title: String) {
+        if (!hasPermissionToAccessExternalStorage()) return
         val fileCannotOpenDialog = FileCannotOpenDialogFragment()
         fileCannotOpenDialog.arguments = Bundle().also {
             it.putString(FileCannotOpenDialogFragment.KEY_DIALOG_TITLE, title)
@@ -71,4 +73,8 @@ abstract class CopyFileActivity : KdanBaseActivity() {
         overridePendingTransition(0, 0)
         finish()
     }
+
+    protected fun copyFile() {
+        viewModel.copyFile(applicationContext)
+    }
 }

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

@@ -13,7 +13,7 @@ import io.reactivex.schedulers.Schedulers
 import java.io.File
 
 class CopyFileViewModel(applicationContext: Context,
-                        info: CopyFileInfo,
+                        private val info: CopyFileInfo,
                         private val eventManager: EventManager<Event> = EventManager()
 ): ViewModel(), EventBroadcaster<CopyFileViewModel.Event> by eventManager {
 
@@ -32,6 +32,10 @@ class CopyFileViewModel(applicationContext: Context,
     private var hasCompleteCopy = false
 
     init {
+        copyFile(applicationContext)
+    }
+
+    fun copyFile(applicationContext: Context) {
         if (!info.shouldCopyFile) {
             onCopySuccess()
         } else {