Merge pull request #767

* 代码优化
This commit is contained in:
5151561
2026-03-27 01:26:12 +08:00
committed by GitHub
parent 4bc40c3dbb
commit fafc852840
@@ -2,6 +2,7 @@ package io.legado.app.lib.permission
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import androidx.activity.result.contract.ActivityResultContracts
@@ -33,10 +34,15 @@ class PermissionActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
val rationale = intent.getStringExtra(KEY_RATIONALE)
val permissions = intent.getStringArrayExtra(KEY_INPUT_PERMISSIONS)!!
val requestType = intent.getIntExtra(KEY_INPUT_REQUEST_TYPE, Request.TYPE_REQUEST_PERMISSION)
showSettingDialog(permissions, rationale) {
try {
requestPermissionsResult.launch(permissions)
when (requestType) {
Request.TYPE_MANAGE_ALL_FILES_ACCESS -> openManageAllFilesAccessSettings()
Request.TYPE_REQUEST_SETTING -> openSettingsActivity()
else -> requestPermissionsResult.launch(permissions)
}
} catch (e: Exception) {
AppLog.put("请求权限出错\n$e", e, true)
RequestPlugins.sRequestCallback?.onError(e)
@@ -62,6 +68,27 @@ class PermissionActivity : AppCompatActivity() {
}
}
private fun openManageAllFilesAccessSettings() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
openSettingsActivity()
return
}
val packageUri = Uri.fromParts("package", packageName, null)
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply {
data = packageUri
}
runCatching {
settingActivityResult.launch(intent)
}.getOrElse {
val fallbackIntent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
runCatching {
settingActivityResult.launch(fallbackIntent)
}.getOrElse {
openSettingsActivity()
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,