【问题标题】:Android restricting downloaded files to appAndroid将下载的文件限制为应用程序
【发布时间】:2020-09-28 14:10:38
【问题描述】:

我正在构建的应用程序用于播放视频,但它需要能够下载视频,以便在用户未连接到互联网时可以观看。

每当我的手机下载文件时,它都会转到手机的下载文件夹,但我希望下载的文件只能从应用程序中访问。

有人能指出我正确的方向吗?我的所有搜索都指向用于下载视频的应用。

【问题讨论】:

  • 就我个人而言,我不喜欢执行这种“锁定”功能的应用程序。如果去下载文件,手机离线也能播放。
  • 我正在为客户构建应用程序,它在规范中。 ://
  • 你必须不用下载管理器
  • 另外,视频不是必须以适当的容器格式包装吗?如果没有,可以通过允许用户搜索设备的简单文件管理器播放视频文件?
  • 请解释一下您今天是如何下载视频的。 DownloadManager?

标签: java android


【解决方案1】:

保存应用程序私有的文件

如果您正在处理不打算供其他应用使用的文件(例如仅由您的应用使用的图形纹理或声音效果),则应通过调用 getExternalFilesDir() 来使用外部存储上的私有存储目录​​。

此方法还需要一个类型参数来指定子目录的类型(例如 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

【讨论】:

  • 很高兴知道这一点。如果对您有用,请接受答案。
【解决方案2】:

使用 getFilesDir() 可以。Check this image from official android docs

但使用 getExternalFilesDir 文件仍然可以使用 android 中的文件管理器访问 -> package_name_folder,通过使用 getFilesDir 我们无法从外部访问这些文件,包括文件管理器。

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多