欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
这是 Android 平台 UTS 插件与系统权限机制的冲突问题。uni.saveVideoToPhotosAlbum 在 Android 10(API 29)及以上版本需要适配分区存储(Scoped Storage),而 UTS 插件使用的权限框架(如 XXPermissions)会检测应用是否声明适配了分区存储。
解决方案
方案一:声明适配分区存储(推荐)
在项目根目录创建 AndroidManifest.xml(注意大小写敏感),添加 ScopedStorage 元数据声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.dcloud.nativeresouce">
<application>
<!-- 表示当前项目已适配分区存储特性 -->
<meta-data
android:name="ScopedStorage"
android:value="true" />
</application>
</manifest>
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
同时在 manifest.json 中配置存储权限:
{
"app": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
]
}
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
方案二:使用 MANAGE_EXTERNAL_STORAGE(未适配分区存储时)
如果项目未适配分区存储,UTS 插件会要求使用 MANAGE_EXTERNAL_STORAGE 权限:
{
"app": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>"
]
}
}
}
}
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
注意:MANAGE_EXTERNAL_STORAGE 权限较为敏感,Google Play 审核可能拒绝,建议优先使用方案一。
权限申请代码调整
在 UTS 插件中,确保权限申请逻辑正确处理了 Android 10+ 的场景。如果使用了 XXPermissions 框架,需要确保在申请 WRITE_EXTERNAL_STORAGE 前已按上述方式配置。
验证步骤
- 添加配置后重新云打包
- 在 Android 10+ 设备上测试
uni.saveVideoToPhotosAlbum
- 检查 UTS 插件的权限申请回调是否正常触发
参考文档: