目录
- 内部存储(Internal Storage)
- 外部存储(读取权限)
- 外部存储的公共文件夹
- 访问外部存储公共文件夹
- 访问外部存储的权限
- 访问应用私有的外部存储目录
- 访问和管理文件
- 总结
在 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/ 路径下:
- Environment.DIRECTORY_MUSIC:存储音乐文件。
- Environment.DIRECTORY_PODCASTS:存储播客文件。
- Environment.DIRECTORY_RINGTONES:存储铃声文件。
- Environment.DIRECTORY_ALARMS:存储闹铃文件。
- Environment.DIRECTORY_NOTIFICATIONS:存储通知音文件。
- Environment.DIRECTORY_PICTURES:存储图片文件。
- Environment.DIRECTORY_MOVIES:存储视频文件。
- Environment.DIRECTORY_DOWNLOADS:存储下载的文件。
- Environment.DIRECTORY_DCIM:存储相机拍摄的照片和视频。
- 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 类和适当的权限管理,可以方便地访问和管理这些文件夹。对于需要长期保留的文件,如照片、视频和文档,外部存储是一个理想的选择。