feat(programs): Android 端通过 MediaStore 写入公共 Downloads
Android 10+ 受 scoped storage 限制,getDownloadsDirectory() 返回的是 app-specific 目录 (/storage/emulated/0/Android/data/.../files/Download/), 而非用户可见的 /storage/emulated/0/Download/。 新增 MainActivity 端 MethodChannel com.xiarui.kuaishai2/downloads: - API 29+:MediaStore.Downloads 写入公共 Downloads,无需权限 - API <=28:直接写 /storage/emulated/0/Download/(需 WRITE_EXTERNAL_STORAGE) Dart 端 ExcelTemplateService 改用 MethodChannel,Android 平台返回 Download/<filename> 显示路径;其它平台保留 getDownloadsDirectory 行为。 返回值由 File 改为 String,调用方已同步更新。
This commit is contained in:
@@ -454,9 +454,9 @@ class _ProgramsPageState extends ConsumerState<ProgramsPage> {
|
||||
/// 下载 Excel 模板
|
||||
Future<void> _downloadTemplate(BuildContext context) async {
|
||||
try {
|
||||
final file = await ExcelTemplateService.instance.generateTemplate();
|
||||
final path = await ExcelTemplateService.instance.generateTemplate();
|
||||
if (!context.mounted) return;
|
||||
ToastService.showSuccess(context, '模板已保存: ${file.path}');
|
||||
ToastService.showSuccess(context, '模板已保存: $path');
|
||||
} catch (e) {
|
||||
if (!context.mounted) return;
|
||||
ToastService.showError(context, '生成模板失败: ${e.toString()}');
|
||||
|
||||
Reference in New Issue
Block a user