Android学习之获取外置SD卡读写路径方法详解

本文详细介绍了在Android系统中如何获取外置SD卡的读写路径,针对4.4以下和4.4及以上版本的不同处理方式,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文和大家分享的主要是android系统获取外置SD卡读写路径相关内容,一起来看看吧,希望对大家 学习android 有所帮助。
  1. 外置SD卡的一些问题
  1.1 关于外置SD卡上的读写路径
  Android 4.4 及以上版本,应用的外置SD卡读写路径被限定在固定路径上( 外置SD卡根路径/Android/data/包名/files )。
  Android4.4 以下版本,申请了外置SD卡读写权限的应用在整个外置SD卡上都有读写权限。
  1.2 关于外置SD卡路径
  另外 Android 没有提供获取外置SD卡路径的API( getExternalStorageDirectory() 获取的实际是内置SD卡路径)。
  2. 获取应用在外置SD卡读写根路径
  在 Android 4.4 以下版本,获取的应该是外置SD卡的根目录(类似 /storage/sdcard1 )。在 Android 4.4 及以上版本,获取的是应用在SD卡上的限定目录( 外置SD卡根路径/Android/data/包名/files/file )
  代码如下:
  public static String getExternalSDPath(Context aContext) {
  String root = null;
  if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
  root = getExternalSDPathKITKAT(aContext);
  File f = new File(root);
  if (!f.exists()) {
  try {
  f.mkdirs();
  } catch (Exception e) {
  e.printStackTrace();
  }
  if (!f.exists()) {
  root = null;
  }
  }
  } else {
  root = getExternalSDCardPath(aContext);
  }
  return root;
  }
  // Android 4.4及以上版本,获取软件在外置SD卡上的保存路径
  public static String getExternalSDPathKITKAT(Context aContext) {
  String rootPath = getStoragePath(aContext, true);
  if (TextUtils.isEmpty(rootPath)) {
  return null;
  }
  File f = new File(rootPath, "Android/data/" + aContext.getPackageName() + "/files/file");
  String fpath = f.getAbsolutePath();
  return fpath;
  }
  // Android 4.4 以下版本获取外置SD卡根目录
  public static String getExternalSDCardPath(Context aContext) {
  HashSetpaths = getExternalMounts();
  File defaultPathFile = aContext.getExternalFilesDir(null);
  String defaultPath;
  if (defaultPathFile == null) {
  return null;
  } else {
  defaultPath = defaultPathFile.getAbsolutePath();
  }
  String prefered = null;
  for (Iterator it = paths.iterator(); it.hasNext();) {
  String path = (String) (it.next());
  if (prefered == null && !defaultPath.startsWith(path)) {
  prefered = path;
  }
  }
  return prefered;
  }


来源:极客头条
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值