Android中访问sdcard路径的几种方式

以前的Android(4.1之前的版本)中,SDcard路径通过“/sdcard”或者“/mnt/sdcard”来表示,而在JellyBean(安卓4.1)系统中修改为了" /storage/sdcard0",还会有多个SDcard的情况。目前为了保持和之前代码的兼容,SDcard路径做了Link映射。为了使代码更加健壮并能兼容以后的Android版本和新设备,安卓4,1后sdcard中会有系统自动生成的保存特定内容的的文件目录,从而可以使用一些特定函数来获取对应目录。

今天我们就简单介绍几种访问SDcard路径的几种方式:

本次演示获取的图片路径如下:

完整路径为“/storage/emulated/0/Download/tianxingjiuge.jpg”

下面我们通过将本机“/storage/emulated/0/Download/tianxingjiuge.jpg”图片加载到APP中ImageView的演示来介绍这几种加载方式:

布局文件上方为一个Button,下方为imagView,不做过多阐述了,java实现代码如下:

public class MainActivity extends AppCompatActivity {
 ImageView iv;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 iv= (ImageView) findViewById(R.id.iv);
 }
 public void load(View view){
 //第一种:直接引用全部的目录(4.1之前使用,之后不建议这样用)
// Bitmap bm = BitmapFactory.decodeFile("/storage/emulated/0/Download/tianxingjiuge.jpg");
 //第二种:/storage/emulated/0这一段的路径可以用Environment.getExternalStorageDirectory()
// Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() +
//  "/Download/tianxingjiuge.jpg");
 //第三种:使用Environment.getExternalStoragePublicDirectory(String type)函数调用不同类型的文件目录
 Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory
  (Environment.DIRECTORY_DOWNLOADS) + "/tianxingjiuge.jpg");
 iv.setImageBitmap(bm);
 }
}

第三种方式中使用Environment.getExternalStoragePublicDirectory(String type)函数,该函数可以返回特定类型的目录,目前支持如下类型:

• DIRECTORY_ALARMS //警报铃声
• DIRECTORY_DCIM //相机拍摄的图片和视频
• DIRECTORY_DOWNLOADS //下载文件保存
• DIRECTORY_MOVIES //电影的保存,比如通过google play下载的电影
• DIRECTORY_MUSIC //音乐保存
• DIRECTORY_NOTIFICATIONS //通知音乐保存
• DIRECTORY_PICTURES //下载的图片
• DIRECTORY_PODCASTS //用于保存podcast(博客)的音频文件
• DIRECTORY_RINGTONES //保存铃声

本次图片保存在Download目录下,所以使用Environment.DIRECTORY_DOWNLOADS。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • 获取android4.0版本sdcard路径示例

    复制代码 代码如下: @SuppressLint("NewApi")//你懂的private File findSDCARD() { boolean b = Environment.MEDIA_MOUNTED.equals(Environment   .getExternalStorageState()); if (!b) return null; File extFile = Environment.getExternalStorageDirectory(); File[] file

  • Android中使用SDcard读取文件

    平时我们需要在手机上面存储想音频,视频等等的大文件,以前学过使用File进行存储(使用File操作进行存储):由于考虑到手机本身的存储空间小,这时候我们需要把文件存储在SDcard中,今天自己也学习了一下在android进行sdcard的存储使用方法; 首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!-- 在SDCard中创建与删除文件权限 --

  • android读取sdcard路径下的文件的方法

    复制代码 代码如下: // 读取sdcard文件private void sdcardRead(){String fileName = "/sdcard/my_sdcard.txt";// assets下文件//String fileName = "/sdcard/test/my_sdcard_test.txt";// sdcard下子目录文件String ret = "";try {FileInputStream fis = new FileI

  • Android实现把文件存放在SDCard的方法

    本文实例讲述了Android实现把文件存放在SDCard的方法.分享给大家供大家参考.具体如下: 使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的.对于像视频这样的大文件,我们可以把它存放在SDCard. SDCard是干什么的?你可以把它看作是移动硬盘或U盘. 在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件).创建

  • Android获取SD卡路径及SDCard内存的方法

    本文实例讲述了Android获取SD卡路径及SDCard内存的方法.分享给大家供大家参考.具体分析如下: 昨天在研究拍照后突破的存储路径的问题,开始存储路径写死为: private String folder = "/sdcard/DCIM/Camera/"(SD卡上拍照程序的图片存储路径); 后来发现这样写虽然一般不会出错,但不是很好,因为不同相机,可能路径会出问题.较好的方法是通过Environment 来获取路径,最后给出一个例子,教你怎样获取SDCard 的内存,显示出来告诉用

  • Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径 Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文件夹,根据判断得到内置sdcard跟外置sdcard. 4.程序运行的时候记得给程序添加读取sdcard的权限哦. /** * 得到sdcard的路径 * @return 返回一个字符串数组 下标0:内置sdcard 下标1:外置sdcard

  • Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法

    本文实例讲述了Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法.分享给大家供大家参考,具体如下: private void CopyAssets(String assetDir, String dir) { String[] files; try { // 获得Assets一共有几多文件 files = this.getResources().getAssets().list(assetDir); } catch (IOException e1) { ret

  • Android编程获取sdcard音乐文件的方法

    本文实例讲述了Android编程获取sdcard音乐文件的方法.分享给大家供大家参考,具体如下: 复制代码 代码如下: Cursor  query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder); Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档. Projection: 指定查询数据库表中的哪几列,

  • Android 读取sdcard上的图片实例(必看)

    Android读取sdcard上的图片是非常简单的事情,下面用一个例子来说明这个问题. 首先,在sdcard上有一张已经准备好的img25.jpg 下面,需要做的是把这张图片读取到app中显示.做到如下的效果: 1.首先你要在AndroidManifest.xml申请读取sdcard的权限,加入一条语句之后,AndroidManifest.xml如下: <?xml version="1.0" encoding="utf-8"?> <manifest

  • Android中访问sdcard路径的几种方式

    以前的Android(4.1之前的版本)中,SDcard路径通过"/sdcard"或者"/mnt/sdcard"来表示,而在JellyBean(安卓4.1)系统中修改为了" /storage/sdcard0",还会有多个SDcard的情况.目前为了保持和之前代码的兼容,SDcard路径做了Link映射.为了使代码更加健壮并能兼容以后的Android版本和新设备,安卓4,1后sdcard中会有系统自动生成的保存特定内容的的文件目录,从而可以使用一些

  • Android中实现多线程操作的几种方式

    目录 前言 最基础的方式 继承Thread类并实现run()方法 匿名内部类 实现Runnable接口 callable+FutureTask 线程池 手动创建线程池 使用Executors创建线程池 Android中特有的实现多线程 使用HandlerThread 使用IntentService JobIntentService/JobScheduler WorkManager WorkManager 使用协程 AsyncTask 结语 前言 多线程一直是一个老大难的问题,首先因为它难以理解,

  • android中Webview实现截屏三种方式小结

    本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

  • 浅谈android获取存储目录(路径)的几种方式和注意事项

    通常, 我们创建文件/目录, 或者存储图片什么的, 我们都需要拿到手机的存储路径, 现在我们就来看一下获取手机存储路径的几种方式(作为工具类方法调用即可): 第一种: 获取 /storage/emulated/0 public static boolean sdCardIsAvailable() { //首先判断外部存储是否可用 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File

  • 详解Vue.js中引入图片路径的几种方式

    vue --version 3.6.3 记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理: 在 JavaScript 被导入或在 template/CSS 中通过相对路径(以 . 开头)被引用.这类引用会被 webpack 处理. 诸如 <img src="..."> . background: url(...) 和 CSS @import 的资源 例如, url(./imag

  • Android中Intent传递对象的3种方式详解

    前言 相信Intent的用法大家已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,当我们使用Intent在Activity 间传递信息时发现putExtra() 方法并不支持自定义对象的传输,下面就来介绍三种解决方式. 一.Serializable 方式 这是最简单的一种方法,因为我们要做的就是让我们自定义的对象实现 Serializable 这个空接口. public class Person implements Se

  • Android中Handler实现倒计时的两种方式

    背景: 最近项目中,正好做到登录/注册这个功能块.它需要通过发送验证码,在规定的时间内用验证码来完成登录/注册.之前的项目中也有这个功能,但是觉得太复杂了,只好自己重新实现一遍.用Handler来做,觉得代码简介,逻辑也清楚. 代码一: //在向服务端发送获取验证码成功的回调函数中,开始发消息: mHandler.obtainMessage(); mHandler.sendEmptyMessage(MSG_CODE); //消息的处理: private static final int MSG_

  • Android平台中实现数据存储的5种方式

    本文介绍Android中的5种数据存储方式,具体内容如下 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍.  第一种:使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一

  • Android中的相对路径实例详解

     1.同个文件夹访问 D:\Java\main\A.java D:\Java\main\B.java A访问B的相对路径为B.java 2.目标文件在其子目录 D:\Java\A.java D:\Java\main\B.java A访问B的相对路径为main\B.java 注意的是在Android代码中必须这样写main/B.java,上面之所以那样写只是为了说明它在window下的路径,Java程序中路径分隔符是'/'或者'\\',因为Java程序中'\'表示转义的意思. 3.目标文件在其上一

随机推荐