网站建设应该考虑哪些问题,如何规划网站栏目,公司网络推广平台,贵阳小程序定制公司Android 存储位置及 API
一、内部存储
应用安装后都会在Android 根目录生成 /data/data/packagename#xff0c;当前应用读取不需要读写权限 注意#xff1a; 有些开发者可能看到过应用的根目录为 /data/user/0/packagename 的情况#xff0c;这里解释一下#xff0c;And…Android 存储位置及 API
一、内部存储
应用安装后都会在Android 根目录生成 /data/data/packagename当前应用读取不需要读写权限 注意 有些开发者可能看到过应用的根目录为 /data/user/0/packagename 的情况这里解释一下Android 4.2 版本添加了同一设备可以登录不同用户的功能(由于专利原因仅限于平板电脑手机不支持此功能)所以为了区分不同用户在同一应用中的设置和存储的数据添加了该系列的路径该路径指向 /data/data/packagename getFileDir() 方法得到的是该目录下 files 文件夹的 File 对象 getChacheDir() 方法得到的是该目录下 cache 文件夹的 File 对象 直接调用ContextWrapper的 openFileOutput(String name,int mode) 也会在该目录下 files 文件夹下创建相应的文件并且是私密的。可以修改为其他应用可访问的通过 openFileOutput 方法的 mode 参数来完成 注意
该目录只有 root 权限下可以查看会随着应用卸载删除应用程序详情中清除数据会将 packagename 下所有数据以及内置存储、外置 SD 卡存储空间中 /Android/data/packagename 的整个目录删除删除应用程序详情中清除缓存会将 packagename/cache 目录下所有数据以及内置存储、外置 SD 卡存储空间中 /Android/data/packagename/cache 的整个目录删除
二 内置存储
手机自带 ROM 的存储路径
getExternalCacheDir() 方法获取内置存储卡中 /Android/data/packagename/cache 目录的路径4.4及之后读写不需要权限会随着应用卸载删除 getExternalFilesDir() 方法获取内置存储卡中 /Android/data/packagename/files 目录的路径4.4之后读写不需要权限会随着应用卸载删除该方法参数为 “null” 时不指定子文件夹指定时创建子文件夹保存文件。创建的文件其他应用只要有读写权限也可以读取如果要私密的就使用内部存储。 Environment.getExternalStorageDirectory() 方法得到的是内置存储目录的根路径目录,读写需要权限不会随着应用卸载删除 Environment.getExternalStoragePublicDirectory() 方法得到的是内置存储目录根路径下的特定类型文件的公共目录读写需要权限,不会随着应用卸载删除 注意内置存储中 /Android/data/packagenaem/ 路径的读写 Android 版本不同需要权限不同所以开发时应始终声明读写权限
三、外置SD存储卡
支持外置SD存储卡的机器可以由 ContextCompat 的 getExternalFilesDirs() 方法得到所有存储根目录下 /Android/data/packagename/files 路径的数组如果该方法第二个参数不为 null 则会再创建相应子级文件夹。再根据数组遍历即可操作相应的存储路径进行读写。4.4及之后该操作不需要声明读写权限。 File[] files ContextCompat.getExternalFilesDirs(this, “”);
注意
通过该方法得内置存储卡的路径可以对根据 getParent 系列方法可以得到上一级的路径进行读写操作但需要权限 通过该方法得外置SD存储卡的路径但是不可以对根据 getpParent 系列方法得到的上级路径进行写如果写会报没有权限异常即使声明写权限也没用。声明读权限后可正常进行读操作。 内置和外置SD存储卡中 Android/data/packagename 目录都会在应用程序详情中清除数据和应用卸载时被删除。
作者renxuelong 链接https://www.jianshu.com/p/d5945c726182 來源简书 简书著作权归作者所有任何形式的转载都请联系作者获得授权并注明出处。