Flutter应用使用SQFlite创建内部存储数据库是否需要申请存储权限?
Flutter应用使用SQFlite创建内部存储数据库是否需要申请存储权限?
嗨,这个问题我之前做Flutter项目的时候也纠结过,答案是完全不需要额外申请存储权限,原因得从Android和iOS两个平台的存储机制分别说起:
Android平台
- 不管是低版本还是高版本的Android,SQFlite默认会把数据库文件存在应用的私有内部存储目录(比如
/data/data/[你的应用包名]/databases/)里。这个目录是系统专门给每个应用分配的专属区域,只有当前应用能访问,系统默认就授予了应用对这个目录的读写权限,不需要你去申请READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE这类存储权限。 - 就算是Android 10及以上的Scoped Storage(分区存储)机制,也不会影响应用对自己私有目录的访问,完全不用额外配置权限。
- 不管是低版本还是高版本的Android,SQFlite默认会把数据库文件存在应用的私有内部存储目录(比如
iOS平台
- iOS的沙箱机制决定了每个应用只能访问自己的沙箱目录,SQFlite默认会把数据库存在沙箱内的Documents或Library目录下,这些区域都是应用的专属空间,系统自动允许应用读写,不需要申请任何存储权限。
额外提一句:如果之后你的应用有需求要把数据库文件导出到共享区域(比如Android的下载文件夹、iOS的共享相册),那时候才需要申请对应的存储权限,但如果只是用SQFlite存储和读取自己的应用数据,完全不用操心权限的事儿,放心用就行~




