Android之外部存储可以访问哪些文件夹


在 Android 设备上,外部存储(External Storage)指的是设备的外部存储空间,可以是内置的存储(如内部 SD 卡)或可移动的存储(如外部 SD 卡)。外部存储通常用于存储需要长期保留的文件,如照片、视频和文档等。Android 提供了一些标准的公共文件夹,用于特定类型的文件存储。

Android应用程序可以访问以下几个外部存储的文件夹:

内部存储(Internal Storage)

  • /data/data/<app_package>/files/: 应用程序自身的私有目录,通常用于存储应用缓存、用户生成的数据等。
  • /data/data/<app_package>/cache/: 应用的缓存文件夹,用于临时存储数据。

外部存储(读取权限)

/storage/emulated/0/: 手机的默认外部存储,需要用户授权才能访问。这包括DCIM(图片)、Documents(文档)、Download(下载)等子目录。
/storage/sdcard/: 如果设备支持SD卡,Android系统会将其视为外部存储,不过现代手机大多将此路径归入/storage/emulated/0。

外部存储的公共文件夹

以下是一些常见的外部存储公共文件夹,这些文件夹通常位于 /storage/emulated/0/ 路径下

  1. Environment.DIRECTORY_MUSIC:存储音乐文件。
  2. Environment.DIRECTORY_PODCASTS:存储播客文件。
  3. Environment.DIRECTORY_RINGTONES:存储铃声文件。
  4. Environment.DIRECTORY_ALARMS:存储闹铃文件。
  5. Environment.DIRECTORY_NOTIFICATIONS:存储通知音文件。
  6. Environment.DIRECTORY_PICTURES:存储图片文件。
  7. Environment.DIRECTORY_MOVIES:存储视频文件。
  8. Environment.DIRECTORY_DOWNLOADS:存储下载的文件。
  9. Environment.DIRECTORY_DCIM:存储相机拍摄的照片和视频。
  10. Environment.DIRECTORY_DOCUMENTS:存储文档文件。

访问外部存储公共文件夹

要访问这些公共文件夹,可以使用 Environment 类提供的方法。例如,要获取图片文件夹的路径,可以使用以下代码:

File picturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

访问外部存储的权限

在访问外部存储时,需要申请相应的权限。在 Android 6.0 (API 级别 23) 及以上版本,需要在运行时动态申请权限。
在 AndroidManifest.xml 中声明权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在代码中动态申请权限:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_STORAGE);
}

访问应用私有的外部存储目录

除了公共文件夹,Android 还允许应用在外部存储中创建私有目录。私有目录在应用被卸载时会自动删除。

File appExternalFilesDir = getExternalFilesDir(null); // 获取应用私有外部存储根目录
File appExternalPicturesDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); // 获取应用私有外部存储图片目录

访问和管理文件

一旦获得了文件夹路径,可以使用标准的文件 I/O 操作来访问和管理文件。例如,创建一个文件并写入内容:

File file = new File(picturesDir, "example.txt");
try (FileOutputStream fos = new FileOutputStream(file)) {
    fos.write("Hello, World!".getBytes());
} catch (IOException e) {
    e.printStackTrace();
}

总结

在 Android 中,外部存储提供了一些标准的公共文件夹,用于存储特定类型的文件。通过使用 Environment 类和适当的权限管理,可以方便地访问和管理这些文件夹。对于需要长期保留的文件,如照片、视频和文档,外部存储是一个理想的选择。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 12引入了一项新的功能,即文件夹访问限制。这项功能旨在增强用户对其设备上存储的敏感文件的保护和隐私。在以前的Android版本中,应用程序可以自由地访问设备上的文件夹,包括存储在内部存储外部存储中的文件。但是,这种开放的访问权限可能会导致安全和隐私问题,因此,Android 12引入了一套新的规则来限制对文件夹访问。 随着Android 12的推出,对于应用程序来说,访问文件夹将更加受限制。现在,应用程序只能直接访问其私有目录和共享存储目录中的文件。私有目录仅包含该应用程序专用的文件,而共享存储目录则是用于应用程序之间共享文件的地方。对于其他文件夹,应用程序需要使用新的权限来访问。 在Android 12中,开发人员需要在其应用程序清单文件中声明新的文件访问权限,并获取用户的授权才能访问受限文件夹。这样做的目的是确保用户知道哪些应用程序可以访问其文件,并有机会选择是否授予访问权限。 这项新的文件夹访问限制功能在加强用户隐私保护的同时,也给开发人员带来了一些挑战。他们需要重新审查他们的应用程序逻辑,并确保它们不会违反新的访问规则。这将有助于提高应用程序的安全性和稳定性,并确保用户的文件和数据得到适当的保护。 总之,Android 12的文件夹访问限制功能是对以往开放的访问权限进行了改进,旨在保护用户的隐私和安全。开发人员需要遵守新的访问规则,并尊重用户的选择,以确保他们的应用程序符合最新的隐私标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值