分区存储

1、访问特定应用目录 

//String externalStorageDir = Environment.getExternalStorageDirectory().toString();  //弃用
        String externalCacheDir = context.getExternalCacheDir().toString();
        String externalFilesDirEmpty = context.getExternalFilesDir("").toString();
        String externalFilesDirUserNamed = context.getExternalFilesDir("test_android_10_fit").toString();
        String externalFilesDirEnvironmentMusic = context.getExternalFilesDir(Environment.DIRECTORY_MUSIC).toString();
        String externalFilesDirEnvironmentAlarms = context.getExternalFilesDir(Environment.DIRECTORY_ALARMS).toString();
        String externalFilesDirEnvironmentNotifications = context.getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS).toString();
        String externalFilesDirEnvironmentPicture = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString();
        String externalFilesDirEnvironmentMOvies = context.getExternalFilesDir(Environment.DIRECTORY_MOVIES).toString();
        String externalFilesDirEnvironmentDownloads = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString();
        String externalFilesDirEnvironmentDcim = context.getExternalFilesDir(Environment.DIRECTORY_DCIM).toString();
        String externalFilesDirEnvironmentDocuments = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).toString();

2、访问媒体集合(MediaStore)

3、通过“存储访问框架”可以访问到上面提到的目录以及一些系统公共目录(如:download)(存储访问框架只能访问特定目录的文件,如果应用尝试通过原始文件系统视图打开此目录之外的文件,则会报错)

注意:如果需要访问其他应用创建的文件(如 download 中的文件)()

1、需要获得  READ_EXTERNAL_STORAGE 权限

2、这些文件位于以下其中一个明确定义的媒体集合中


关于 ACCESS_BACKGROUND_LOCATION 权限

ACCESS_BACKGROUND_LOCATION 权限是在 Android 10 中引入的。

如果应用在后台访问设备的位置,则需要申请该权限。

刚好今天看到郭神的推文,就顺便补充记录一下。

1、 ACCESS_BACKGROUND_LOCATION 权限 在 Android 11 系统中变成了一个要去单独申请的权限,和前台位置权限同时申请时会产生奔溃。
2、在 Android 10 中,ACCESS_BACKGROUND_LOCATION 和前台权限是可以一起申请的,会产生两次权限申请对话框。
项目中有用到 permissionX 这个框架,就不用自己去处理权限申请方面的逻辑了。最新版的 permissionX 也对上面提到的两点做了适配。
(注:在 Android 10 以下的系统中是不存在 ACCESS_BACKGROUND_LOCATION 这个权限的,所以在使用 permissionX 时需要判断当前系统版本,决定要不要申请 ACCESS_BACKGROUND_LOCATION 权限)

下面是官方文档的描述:


随机分配的 MAC 地址

Android 10 及以上的设备,系统会传输随机分配的 MAC 地址。

适配android10 存储 安卓10适配列表_android


设备标识符

项目中有用到  IMEI 来拼接设备唯一标识符的。从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。

适配android10 存储 安卓10适配列表_java_02


限制了对剪贴板数据的访问权限

除非您的应用是默认输入法 (IME) 或是目前处于焦点的应用,否则它无法访问 Android 10 或更高版本平台上的剪贴板数据。