Android Data Storage(数据存储)值External Storage
来源:互联网 发布:system32权限知乎 编辑:程序博客网 时间:2024/05/23 13:53
每个Android设备都支持共享“外部存储” 你可以用它来保存文件。 它可能是一个可移动的存储(如SD卡)也可能是一个固定的内部存储。 文件保存在外部存储中是公开的,当它使USB大容量转移到电脑上时,用户可以修改他们。
警告:如果用户在计算机上安装外部存储或删除媒体,则外部文件可能会消失,而文件保存到外部存储的文件没有安全性。所有应用程序都可以读取和写入文件放置在外部存储和用户可以删除它们。
在外部存储做一些工作之前,你应一致调用getExternalStorageState()方法来检测外部设备是否可用。 设备可能安装在电脑,丢失,只读或其他状态。 例如: 这里如何检测设备是否可用:
/** * 检测外部存储状态 */public void checkExternalStorage(){boolean mExternalSotrageAvailable = false;boolean mExternalStorageWriteable = false;// 获取外部存储状态String state = Environment.getExternalStorageState();if (Environment.MEDIA_MOUNTED.equals(state)) {// if the media is present and mounted at its mount point with read/write access. mExternalSotrageAvailable = mExternalStorageWriteable = true;} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){// if the media is present and mounted at its mount point with read only access. mExternalSotrageAvailable = true;mExternalStorageWriteable = false;} else {mExternalSotrageAvailable = mExternalStorageWriteable = false;}}
使用SdCard存储数据的方式与内部存储的方式基本一致,但是有三点需要注意的:
- 第一点,需要首先判断是否存在可用的Sdcard,这个可以使用一个访问设备环境变量的类Environment进行判断,这个类提供了一系列的静态方法,用于获取当前设备的状态,在这里获取是否存在有效的Sdcard,使用的是Environment.getExternalStorageState()方法,返回的是一个字符串数据,Environment封装好了一些final对象进行匹配,除了Environment.MEDIA_MOUNTED外,其他均为有问题,所以只需要判断是否是Environment.MEDIA_MOUNTED状态即可。
- 第二点,既然转向了Sdcard,那么存储的文件路径就需要相对变更,这里可以使用Envir.getExternalStorageDirectory()方法获取当Sdcard的根目录,可以通过它访问到相应的文件。
- 第三点,需要赋予应用程序访问Sdcard的权限,Android的权限控制尤为重点,在Android程序中,如果需要做一些越界的操作,均需要对其进行授权才可以访问。在AndroidManifest.xml中添加代码:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
访问外部存储
保存应共享文件
如果你想保存文件没有特定你的应用程序,当你应用程序卸载时它将不会被删除。 保存他们在一个公共的外部存储目录之一中, 这个目录在外部存储根源,如Music/, Pictures/, Ringtones/ 或 其他。
在API版本 8 或更高, 使用getExternalStoragePublicDirectory()方法,你想要传递给它你想要的公共目录类型,如DIRECTORY_MUSIC, DIRECTORY_PICTYRES, 或其他。 该方法将在必要时创建适当的目录。
保存Cache文件
如果你使用的API版本 8 或更高 , 使用 getExternalCacheDir() 打开文件用来代替外部存储目录,在哪里你可以保存临时文件。 如果用户卸载你的应用程序,文件将自动地删除。 然而,在你的应用程序存活的期间,你可以管理这个临时文件,不需要它时为了保护文件空间可以删除它。
如果你使用的API级别7或更低,使用getexternalstoragedirectory()打开一个文件,代表外部存储的根,然后把你的缓存数据在以下目录:
/Android/data/<package_name>/cache/
System.out.println(" getExternalFilesDir.getAbsolutePath() -- >>> " + getExternalFilesDir(Environment.DIRECTORY_MUSIC).getAbsolutePath()); System.out.println(" Environment.getExternalStorageDirectory().getAbsolutePath() -- >>> " + Environment.getExternalStorageDirectory().getAbsolutePath()); System.out.println(" public directory music -- >>> " + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)); System.out.println(" public directory pictures -- >>> " + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)); 输出结果:09-08 16:36:23.170: I/System.out(4407): getExternalFilesDir.getAbsolutePath() -- >>> /storage/emulated/0/Android/data/com.mytest.activity/files/Music09-08 16:36:23.170: I/System.out(4407): Environment.getExternalStorageDirectory().getAbsolutePath() -- >>> /storage/emulated/009-08 16:36:23.170: I/System.out(4407): public directory music -- >>> /storage/emulated/0/Music09-08 16:36:23.170: I/System.out(4407): public directory pictures -- >>> /storage/emulated/0/Pictures
- Android Data Storage(数据存储)值External Storage
- Android数据存储--External Storage(外部存储)
- android 文件存储 Internal storage External storage
- Android Data Storage(数据存储)之Internal Storage
- Android Data Storage(数据存储)之SharedPreferences
- Android数据存储(External Storage,外部存储)
- Android数据存储之External Storage外部存储
- Android 数据存储-------外部存储(SD卡) External Storage
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android数据存储(2)向机身内存(Internal Storage)和SDcard(External Storage)读写数据实例
- Android 外部存储external storage和内部存储internal storage
- Data Storage 数据存储方式
- Android Data Storage --- Android 数据存储
- Android数据存储(Data Storage)(一)
- Android数据存储(Data Storage)(二)
- Data Storage---Android数据的四种存储方式
- Android--------External Storage
- 获取图片名
- mac下svn上传.a
- 从iOS到Apple Watch:用WatchKit创建新型可穿戴应用——互动出版网
- 数据结构之冒泡排序java实现
- this product is covered by one or more of the following
- Android Data Storage(数据存储)值External Storage
- Android视频图片缩略图的获取
- [BLE--GAP]GAP Service及其使用
- A/libc﹕ Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 25427 (pool-1-thread-2)
- 使用AFNetworking加载网络图片
- JavaScript:call,apply,bind的用法
- linux insufficient permissions for device(解决adb shell问题)
- 启动ssh服务时,提示Could not load host key: /etc/ssh/ssh_host_rsa_key
- 统计字符串中每个字符出现的次数