|  |  |  | @ -2,17 +2,23 @@ package io.legado.app.ui.book.info.edit | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import android.app.Activity | 
			
		
	
		
			
				
					|  |  |  |  | import android.content.Intent | 
			
		
	
		
			
				
					|  |  |  |  | import android.net.Uri | 
			
		
	
		
			
				
					|  |  |  |  | import android.os.Bundle | 
			
		
	
		
			
				
					|  |  |  |  | import android.view.Menu | 
			
		
	
		
			
				
					|  |  |  |  | import android.view.MenuItem | 
			
		
	
		
			
				
					|  |  |  |  | import androidx.documentfile.provider.DocumentFile | 
			
		
	
		
			
				
					|  |  |  |  | import androidx.lifecycle.Observer | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.R | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.base.VMBaseActivity | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.data.entities.Book | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.help.permission.Permissions | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.help.permission.PermissionsCompat | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.ui.book.changecover.ChangeCoverDialog | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.getViewModel | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.* | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.android.synthetic.main.activity_book_info_edit.* | 
			
		
	
		
			
				
					|  |  |  |  | import org.jetbrains.anko.sdk27.listeners.onClick | 
			
		
	
		
			
				
					|  |  |  |  | import org.jetbrains.anko.toast | 
			
		
	
		
			
				
					|  |  |  |  | import java.io.File | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class BookInfoEditActivity : | 
			
		
	
		
			
				
					|  |  |  |  |     VMBaseActivity<BookInfoEditViewModel>(R.layout.activity_book_info_edit), | 
			
		
	
	
		
			
				
					|  |  |  | @ -101,13 +107,48 @@ class BookInfoEditActivity : | 
			
		
	
		
			
				
					|  |  |  |  |         upCover() | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private fun coverChangeTo(uri: Uri) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (uri.toString().isContentPath()) { | 
			
		
	
		
			
				
					|  |  |  |  |             val doc = DocumentFile.fromSingleUri(this, uri) | 
			
		
	
		
			
				
					|  |  |  |  |             doc?.name?.let { | 
			
		
	
		
			
				
					|  |  |  |  |                 var file = this.externalFilesDir | 
			
		
	
		
			
				
					|  |  |  |  |                 file = FileUtils.createFileIfNotExist(file, it, "covers") | 
			
		
	
		
			
				
					|  |  |  |  |                 kotlin.runCatching { | 
			
		
	
		
			
				
					|  |  |  |  |                     DocumentUtils.readBytes(this, doc.uri) | 
			
		
	
		
			
				
					|  |  |  |  |                 }.getOrNull()?.let { byteArray -> | 
			
		
	
		
			
				
					|  |  |  |  |                     file.writeBytes(byteArray) | 
			
		
	
		
			
				
					|  |  |  |  |                     coverChangeTo(file.absolutePath) | 
			
		
	
		
			
				
					|  |  |  |  |                 } ?: toast("获取文件出错") | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             PermissionsCompat.Builder(this) | 
			
		
	
		
			
				
					|  |  |  |  |                 .addPermissions( | 
			
		
	
		
			
				
					|  |  |  |  |                     Permissions.READ_EXTERNAL_STORAGE, | 
			
		
	
		
			
				
					|  |  |  |  |                     Permissions.WRITE_EXTERNAL_STORAGE | 
			
		
	
		
			
				
					|  |  |  |  |                 ) | 
			
		
	
		
			
				
					|  |  |  |  |                 .rationale(R.string.bg_image_per) | 
			
		
	
		
			
				
					|  |  |  |  |                 .onGranted { | 
			
		
	
		
			
				
					|  |  |  |  |                     RealPathUtil.getPath(this, uri)?.let { path -> | 
			
		
	
		
			
				
					|  |  |  |  |                         val imgFile = File(path) | 
			
		
	
		
			
				
					|  |  |  |  |                         if (imgFile.exists()) { | 
			
		
	
		
			
				
					|  |  |  |  |                             var file = this.externalFilesDir | 
			
		
	
		
			
				
					|  |  |  |  |                             file = FileUtils.createFileIfNotExist(file, imgFile.name, "covers") | 
			
		
	
		
			
				
					|  |  |  |  |                             file.writeBytes(imgFile.readBytes()) | 
			
		
	
		
			
				
					|  |  |  |  |                             coverChangeTo(file.absolutePath) | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 .request() | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { | 
			
		
	
		
			
				
					|  |  |  |  |         super.onActivityResult(requestCode, resultCode, data) | 
			
		
	
		
			
				
					|  |  |  |  |         when (requestCode) { | 
			
		
	
		
			
				
					|  |  |  |  |             resultSelectCover -> { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (resultCode == Activity.RESULT_OK) { | 
			
		
	
		
			
				
					|  |  |  |  |                     data?.data?.let { uri -> | 
			
		
	
		
			
				
					|  |  |  |  |                         coverChangeTo(uri.toString()) | 
			
		
	
		
			
				
					|  |  |  |  |                         coverChangeTo(uri) | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |