-- 核心函数:检查并申请存储权限
function checkAndRequestStoragePermission()
-- 使用数字进行版本检查,避免引用不存在的常量
-- Android 11 (API 30) 及以上版本的处理逻辑
if Build.VERSION.SDK_INT >= 30 then -- 30 = Android 11 (API 30) = Build.VERSION_CODES.R
-- 检查是否已有"管理所有文件"的权限
if not Environment.isExternalStorageManager() then
-- 没有权限,则创建一个Intent跳转到系统设置页面
local intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
local uri = Uri.fromParts("package", activity.getPackageName(), nil)
intent.setData(uri)
activity.startActivity(intent)
-- 给用户一个提示
Toast.makeText(activity, "请在设置中授予所有文件访问权限", Toast.LENGTH_LONG).show()
return false -- 表示权限尚未获得
else
return true -- 已有权限
end
else
-- 对于 Android 10 (API 29) 及以下版本,使用旧的运行时权限申请方式
-- 注意:这里需要导入 PackageManager
-- 检查是否已有写外部存储的权限
local permission = activity.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
if permission == PackageManager.PERMISSION_GRANTED then
return true -- 已有权限
else
-- 请求权限
activity.requestPermissions({android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1001)
Toast.makeText(activity, "请授予存储权限以继续", Toast.LENGTH_SHORT).show()
return false -- 等待权限授予
end
end
end