我正在构建的应用程序用于播放视频,但它需要能够下载视频,以便在用户未连接到互联网时观看视频。
每当我的手机下载文件时,它都会进入手机的下载文件夹,但我希望只能从应用程序访问下载的文件。
有人能指出我正确的方向吗?我的所有搜索都会导致用于下载视频的应用。
答案 0 :(得分:0)
保存app-private文件
如果您正在处理不适合其他应用程序使用的文件(例如仅由您的应用程序使用的图形纹理或声音效果),则应通过调用getExternalFilesDir()在外部存储上使用专用存储目录。
此方法还使用type参数指定子目录的类型(例如DIRECTORY_MOVIES)。如果您不需要特定的媒体目录,请传递null以接收应用程序私人目录的根目录。
从Android 4.4开始,在应用程序的私人目录中读取或写入文件不需要READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限。因此,您可以通过添加maxSdkVersion属性来声明仅在较低版本的Android上请求权限:
<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
...
</manifest>
注意:当用户卸载您的应用程序时,将删除此目录及其所有内容。此外,系统介质扫描程序不读取这些目录中的文件,因此无法从MediaStore内容提供程序访问它们。因此,您不应将这些目录用于最终属于用户的媒体,例如使用您的应用程序捕获或编辑的照片,或用户使用您的应用程序购买的音乐 - 这些文件应保存在公共目录中。
参考:http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
答案 1 :(得分:0)
使用getFilesDir()即可。Check this image from official android docs
但是使用getExternalFilesDir文件仍然可以通过android-> package_name_folder中的文件管理器进行访问,通过使用getFilesDir,我们无法从外部(包括文件管理器)访问这些文件。