This commit is contained in:
kunfei
2023-01-22 11:34:58 +08:00
parent 2f7774cb67
commit 11712836b7
5 changed files with 11 additions and 12 deletions
@@ -2,7 +2,6 @@ package io.legado.app.lib.permission
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.view.KeyEvent import android.view.KeyEvent
@@ -46,7 +45,7 @@ class PermissionActivity : AppCompatActivity() {
} }
//所有文件的管理权限 //所有文件的管理权限
Request.TYPE_MANAGE_ALL_FILES_ACCESS_PERMISSION -> try { Request.TYPE_MANAGE_ALL_FILES_ACCESS_PERMISSION -> try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Permissions.isManageExternalStorage()) {
val settingIntent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION) val settingIntent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
settingActivityResult.launch(settingIntent) settingActivityResult.launch(settingIntent)
} else { } else {
@@ -42,7 +42,7 @@ object Permissions {
const val ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION" const val ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION"
object Group { object Group {
val STORAGE = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val STORAGE = if (isManageExternalStorage()) {
arrayOf(MANAGE_EXTERNAL_STORAGE) arrayOf(MANAGE_EXTERNAL_STORAGE)
} else { } else {
arrayOf(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE) arrayOf(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
@@ -78,4 +78,8 @@ object Permissions {
RECEIVE_MMS RECEIVE_MMS
) )
} }
fun isManageExternalStorage(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
}
} }
@@ -119,7 +119,7 @@ internal class Request : OnRequestPermissionsResultCallback {
val deniedPermissionList = ArrayList<String>() val deniedPermissionList = ArrayList<String>()
for (permission in permissions) { for (permission in permissions) {
if (permission == Permissions.MANAGE_EXTERNAL_STORAGE) { if (permission == Permissions.MANAGE_EXTERNAL_STORAGE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Permissions.isManageExternalStorage()) {
if (!Environment.isExternalStorageManager()) { if (!Environment.isExternalStorageManager()) {
deniedPermissionList.add(permission) deniedPermissionList.add(permission)
} }
@@ -2,7 +2,6 @@ package io.legado.app.ui.document
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.webkit.MimeTypeMap import android.webkit.MimeTypeMap
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
@@ -162,8 +161,7 @@ class HandleFileActivity :
private fun getDirActions(onlySys: Boolean = false): ArrayList<SelectItem<Int>> { private fun getDirActions(onlySys: Boolean = false): ArrayList<SelectItem<Int>> {
return if ( return if (
onlySys || onlySys || (Permissions.isManageExternalStorage() && AppConfig.isGooglePlay)
(Build.VERSION.SDK_INT > Build.VERSION_CODES.Q && AppConfig.isGooglePlay)
) { ) {
arrayListOf(SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR)) arrayListOf(SelectItem(getString(R.string.sys_folder_picker), HandleFileContract.DIR))
} else { } else {
@@ -175,7 +173,7 @@ class HandleFileActivity :
} }
private fun getFileActions(): ArrayList<SelectItem<Int>> { private fun getFileActions(): ArrayList<SelectItem<Int>> {
return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q && AppConfig.isGooglePlay) { return if (Permissions.isManageExternalStorage() && AppConfig.isGooglePlay) {
arrayListOf(SelectItem(getString(R.string.sys_file_picker), HandleFileContract.FILE)) arrayListOf(SelectItem(getString(R.string.sys_file_picker), HandleFileContract.FILE))
} else { } else {
arrayListOf( arrayListOf(
@@ -8,7 +8,6 @@ import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter import io.legado.app.base.adapter.RecyclerAdapter
import io.legado.app.databinding.ItemFontBinding import io.legado.app.databinding.ItemFontBinding
import io.legado.app.utils.* import io.legado.app.utils.*
import java.io.File import java.io.File
import java.net.URLDecoder import java.net.URLDecoder
@@ -34,9 +33,8 @@ class FontAdapter(context: Context, curFilePath: String, val callBack: CallBack)
val typeface: Typeface? = if (item.isContentScheme) { val typeface: Typeface? = if (item.isContentScheme) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.contentResolver context.contentResolver
.openFileDescriptor(item.uri, "r") .openFileDescriptor(item.uri, "r")?.use {
?.fileDescriptor?.let { Typeface.Builder(it.fileDescriptor).build()
Typeface.Builder(it).build()
} }
} else { } else {
Typeface.createFromFile(RealPathUtil.getPath(context, item.uri)) Typeface.createFromFile(RealPathUtil.getPath(context, item.uri))