如何从android中的SD卡获取文件路径

M.A*_*ali 33 android

大家好我有sd卡的mp3文件.如何从SD卡获取mp3歌曲的文件路径.

请帮助我

Jay*_*mar 59

您可以从以下代码获取SD卡的路径:

File extStore = Environment.getExternalStorageDirectory();
Run Code Online (Sandbox Code Playgroud)

然后指定foldername和文件名

例如:

"/LazyList/"+serialno.get(position).trim()+".jpg"
Run Code Online (Sandbox Code Playgroud)

  • 有一个buildin存储,它是/ storage/sdcard0和一个SD卡,在我的手机中是/ storage/sdcard1(运行android 4.1.2.)Environment.getExternalStorageDirectory().getAbsolutePath()return/storage/sdcard0.有没有办法获得SD卡的路径/ storage/sdcard1?硬编码吗? (20认同)
  • Environment.getExternalStorageDirectory()返回"/ storage/emulated/0",而我的SDCard实际上位于"/ storage/extSdCard /" (9认同)

AnV*_*AnV 13

Environment.getExternalStorageDirectory()返回路径的micro SD卡存储.

如何从android中的SD卡获取文件路径

通过SD卡,我假设,你的意思是可移动micro SD卡.

在API级别19,即Android版本4.4 Kitkat中,他们添加File[] getExternalFilesDirs (String type)ContextClass,允许应用程序将数据/文件存储在micro SD卡中.

Android 4.4是该平台的第一个版本,它实际上允许应用程序使用SD卡进行存储.在API级别19之前对SD卡的任何访问都是通过私有的,不受支持的API.

Environment.getExternalStorageDirectory()来自API级别1

getExternalFilesDirs(String type)返回所有共享/外部存储设备上特定于应用程序的目录的绝对路径.这意味着,它将返回内部和外部内存的路径.通常,第二个返回路径将是microSD卡的存储路径(如果有的话).

但请注意,

共享存储可能并不总是可用,因为用户可以弹出可移动媒体.可以使用检查媒体状态 getExternalStorageState(File).

这些文件没有强制执行安全性.例如,任何持有的应用程序WRITE_EXTERNAL_STORAGE都可以写入这些文件.

根据Google /官方Android文档,内部和外部存储术语与我们的想法完全不同.

  • 有趣的答案,但为了完整性,您应该包括您的方法 getExternalFilesDirs 所在的类。 dv 不完整。 (2认同)

小智 11

这段代码有助于轻松搞定............

实际上在某些设备中,外部sdcard默认名称显示为extSdCard,而对于其他设备则显示为sdcard1.此代码段有助于找出确切的路径,并帮助您检索外部设备的路径.

String sdpath,sd1path,usbdiskpath,sd0path; 

if(new File("/storage/extSdCard/").exists()) 
{ 
  sdpath="/storage/extSdCard/";
  Log.i("Sd Cardext Path",sdpath); 
} 
if(new File("/storage/sdcard1/").exists()) 
{ 
  sd1path="/storage/sdcard1/";
  Log.i("Sd Card1 Path",sd1path); 
} 
if(new File("/storage/usbcard1/").exists()) 
{ 
  usbdiskpath="/storage/usbcard1/";
  Log.i("USB Path",usbdiskpath); 
} 
if(new File("/storage/sdcard0/").exists()) 
{ 
  sd0path="/storage/sdcard0/";
  Log.i("Sd Card0 Path",sd0path); 
}
Run Code Online (Sandbox Code Playgroud)