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

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

parent a73bb014
...@@ -2,10 +2,13 @@ package com.base.pdfviewerscannerwhite.ui.permission ...@@ -2,10 +2,13 @@ package com.base.pdfviewerscannerwhite.ui.permission
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import android.os.Build
import android.os.Environment
import android.text.SpannableString import android.text.SpannableString
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.pdfviewerscannerwhite.R import com.base.pdfviewerscannerwhite.R
...@@ -13,6 +16,9 @@ import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding ...@@ -13,6 +16,9 @@ import com.base.pdfviewerscannerwhite.databinding.ActivityPermissionBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.utils.BarUtils import com.base.pdfviewerscannerwhite.utils.BarUtils
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class PermissionActivity : BaseActivity<ActivityPermissionBinding>() { class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
...@@ -52,10 +58,25 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() { ...@@ -52,10 +58,25 @@ class PermissionActivity : BaseActivity<ActivityPermissionBinding>() {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
binding.tvAllow.setOnClickListener { binding.tvAllow.setOnClickListener {
requestStoragePermission(launcher) { requestStoragePermission(launcher, jumpAction = {
MainScope().launch {
if(!delayOpen()){
delayOpen()
}
}
}) {
onBackPressedDispatcher.onBackPressed() 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 ...@@ -9,6 +9,7 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Environment
import android.text.SpannableString import android.text.SpannableString
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
...@@ -52,7 +53,6 @@ import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize ...@@ -52,7 +53,6 @@ import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2 import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime2
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime3 import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime3
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatTime4 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.checkStorePermission
import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission import com.base.pdfviewerscannerwhite.utils.PermissionUtils.requestStoragePermission
import com.base.pdfviewerscannerwhite.utils.SpStringUtils import com.base.pdfviewerscannerwhite.utils.SpStringUtils
...@@ -60,6 +60,9 @@ import com.base.pdfviewerscannerwhite.utils.SpStringUtils.LAST_VIEW_KEY ...@@ -60,6 +60,9 @@ import com.base.pdfviewerscannerwhite.utils.SpStringUtils.LAST_VIEW_KEY
import com.base.pdfviewerscannerwhite.utils.ToastUtils.toast import com.base.pdfviewerscannerwhite.utils.ToastUtils.toast
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.io.File import java.io.File
object DialogView { object DialogView {
...@@ -84,7 +87,19 @@ object DialogView { ...@@ -84,7 +87,19 @@ object DialogView {
binding.tvSet.setOnClickListener { binding.tvSet.setOnClickListener {
dialog.dismiss() 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) launcherAction?.invoke(it)
} }
} }
...@@ -196,7 +211,8 @@ object DialogView { ...@@ -196,7 +211,8 @@ object DialogView {
val file = File(path) val file = File(path)
binding.tvName.text = file.name binding.tvName.text = file.name
binding.tvPath.text = file.absolutePath 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) { if (lastView != null) {
val lastTime = lastView.split("_/_")[1] val lastTime = lastView.split("_/_")[1]
binding.tvLastView.text = lastTime.toLong().toFormatTime3() binding.tvLastView.text = lastTime.toLong().toFormatTime3()
...@@ -233,7 +249,8 @@ object DialogView { ...@@ -233,7 +249,8 @@ object DialogView {
val file = File(item.path) val file = File(item.path)
binding.tvName.text = file.name 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) { if (item.isBookmarked) {
binding.ivBookmark.setImageResource(R.mipmap.h_soucang_s) binding.ivBookmark.setImageResource(R.mipmap.h_soucang_s)
} else { } 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