安卓10-13动态申请sd卡权限(androlua)

-- 核心函数:检查并申请存储权限
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

 

posted on 2025-12-19 11:37  小沙盒工作室  阅读(0)  评论(0)    收藏  举报