优化
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user