You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用因未使用Media Store API被谷歌拒包 如何正确保存文件到下载目录

解决方案

1. 调整AndroidManifest权限配置

你当前申请的绝大多数存储权限都不符合Google Play政策要求,直接删除以下权限:

  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE
  • ACCESS_MEDIA_LOCATION
  • MANAGE_EXTERNAL_STORAGE
    仅保留网络权限即可,同时在application标签中添加兼容属性适配低版本系统:
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:requestLegacyExternalStorage="true"
    ... 其余原有配置不变
>
...
</application>

minSdkVersion 19
targetSdkVersion 31

2. 替换存储逻辑,改用MediaStore API

Android 10(API 29)开始实施分区存储规则,直接访问硬编码存储路径、申请全量存储权限的实现方式都会被Google驳回,你可以通过适配MediaStore规则实现无权限存储文件到Downloads目录。
以下是修改后的代码示例,无需申请任何存储相关权限即可正常保存文件:

import 'package:path_provider/path_provider.dart';
import 'package:media_store/media_store.dart'; 
import 'package:device_info_plus/device_info_plus.dart';

Future<bool> savePdfFile(dynamic bytes) async {
  try {
    if (Platform.isAndroid) {
      final androidInfo = await DeviceInfoPlugin().androidInfo;
      if (androidInfo.version.sdkInt >= 29) {
        // Android 10及以上使用MediaStore存储
        final result = await MediaStore.saveFile(
          bytes,
          name: "sample.pdf",
          directoryType: DirectoryType.downloads,
        );
        return result != null;
      } else {
        // Android 9及以下使用公共下载目录
        final dir = await getExternalStoragePublicDirectory(DirectoryDownloads);
        if (dir == null) return false;
        final saveFile = File("${dir.path}/sample.pdf");
        await saveFile.writeAsBytes(bytes);
        return true;
      }
    }
    // 其余平台逻辑可自行补充
    return false;
  } catch (e) {
    return false;
  }
}

如果你不想引入第三方包,也可以自行通过Flutter平台通道调用Android原生的MediaStore插入逻辑实现相同效果。

3. 验证标准

调整完成后按以下标准验证即可满足Google Play政策要求:

  • 卸载原有测试应用后重新安装,无需授权任何存储权限即可正常保存PDF到Downloads目录
  • 保存的文件可以在系统自带的「下载」应用、文件管理器中正常查看打开
  • 应用无额外非必要权限申请

内容的提问来源于stack exchange,提问作者Zain SMJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:36:02