Commit 0005e831 authored by 周文华's avatar 周文华

【新增】新增高版本所有文件权限检测自动跳转的功能。(待验证,经测试自己的android14和模拟器api 35可以)

parent a73bb014
......@@ -2,10 +2,13 @@ package com.base.pdfviewerscannerwhite.ui.permission
import android.annotation.SuppressLint
import android.graphics.Color
import android.os.Build
import android.os.Environment
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import androidx.activity.addCallback
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import androidx.core.view.updatePadding
import com.base.pdfviewerscannerwhite.R
......@@ -13,6 +16,9 @@ import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.utils.BarUtils
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
......@@ -52,10 +58,25 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
onBackPressedDispatcher.onBackPressed()
}
binding.tvAllow.setOnClickListener {
requestStoragePermission(launcher) {
requestStoragePermission(launcher, jumpAction = {
MainScope().launch {
if(!delayOpen()){
delayOpen()
}
}
}) {
onBackPressedDispatcher.onBackPressed()
}
}
}
@RequiresApi(Build.VERSION_CODES.R)
private suspend fun delayOpen():Boolean{
delay(600)
if (Environment.isExternalStorageManager()) {
onBackPressedDispatcher.onBackPressed()
return true
}
return false
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
......@@ -52,7 +53,6 @@ import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime3
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime4
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkNotificationPermission
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import com.base.pdfviewerscannerwhite.utils.SpStringUtils
......@@ -60,6 +60,9 @@ import com.base.pdfviewerscannerwhite.utils.SpStringUtils.LAST_VIEW_KEY
import com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.io.File
object DialogView {
......@@ -84,7 +87,19 @@ object DialogView {
binding.tvSet.setOnClickListener {
dialog.dismiss()
requestStoragePermission(launcher) {
requestStoragePermission(launcher, {
MainScope().launch {
delay(600)
if (Environment.isExternalStorageManager()) {
startActivity(Intent(this@showStoragePermission, MainActivity::class.java))
}else{
delay(600)
if (Environment.isExternalStorageManager()) {
startActivity(Intent(this@showStoragePermission, MainActivity::class.java))
}
}
}
}) {
launcherAction?.invoke(it)
}
}
......@@ -196,7 +211,8 @@ object DialogView {
val file = File(path)
binding.tvName.text = file.name
binding.tvPath.text = file.absolutePath
val lastView = SpStringUtils.getSpStringList(LAST_VIEW_KEY).find { it.contains(file.absolutePath) }
val lastView =
SpStringUtils.getSpStringList(LAST_VIEW_KEY).find { it.contains(file.absolutePath) }
if (lastView != null) {
val lastTime = lastView.split("_/_")[1]
binding.tvLastView.text = lastTime.toLong().toFormatTime3()
......@@ -233,7 +249,8 @@ object DialogView {
val file = File(item.path)
binding.tvName.text = file.name
binding.tvInfo.text = file.lastModified().toFormatTime4() + " " + file.length().toFormatSize()
binding.tvInfo.text =
file.lastModified().toFormatTime4() + " " + file.length().toFormatSize()
if (item.isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.h_soucang_s)
} else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment