【发布时间】:2016-11-17 02:36:48
【问题描述】:
我有一个想要访问的自定义数据库和文件。目前正在将其保存在根目录的文件夹中,但日志显示我没有这样做的权限。
我不想将文件保存在应用资产文件夹中。将文件保存在内部存储中的最佳位置是什么?
【问题讨论】:
-
存储在
getExternalFilesDir()
我有一个想要访问的自定义数据库和文件。目前正在将其保存在根目录的文件夹中,但日志显示我没有这样做的权限。
我不想将文件保存在应用资产文件夹中。将文件保存在内部存储中的最佳位置是什么?
【问题讨论】:
getExternalFilesDir()
在内部存储/sdcard 中创建名称以 (.) 开头的数据库。您还可以使用 (.) 作为首字母创建文件夹并将您的数据库文件放入其中。这将被隐藏。
【讨论】:
您应该在 AndroidManifest.xml 中添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
【讨论】:
READ_PHONE_STATE?
试试这个。
Context.getExternalCacheDir() 或Context.getExternalFilesDir() 文件将存储在SDCard/Android/data/data/<application package>/cache 或SDCard/Android/data/data/<application package>/files。
您应该在 AndroidManifest.xml 中添加权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但不需要 Android 6.0 运行时权限。
对于内部存储,您可以使用 Context.getCacheDir() 或 Context.getFilesDir()。文件将保存在 data/data/<application package>/cache 或 data/data/<application package>/files。对于这个地方你不需要声明权限。
我认为你的数据库文件存放在默认位置是最好的。data/data/<application package>/database
【讨论】: