如何在运行时以编程方式找到android外部存储的确切路径?

时间:2014-08-01 07:42:29

标签: android

mySound.load(new URLRequest("file://mnt/sdcard/AnyFolder/YourSound.mp3"));`<br/>

我想在运行时检测SD卡的名称,因此我可以将我的app-data存储在外部存储器中。

以上代码行是将mp3存储到用户所需位置的示例。

4 个答案:

答案 0 :(得分:1)

也许你要求:

File f = new File(Environment.getExternalStorageDirectory() +
    "/" + "yourfilename");

我还建议你不要写入SD卡的根目录。将应用程序数据写入适当的文件夹是一种很好的做法:

File f = new File(Environment.getExternalStorageDirectory() +
    "/Android/data/com.example.testapp/" + "yourfilename");

显然,您必须使用您的应用包(您在Eclipse / Android Studio中创建项目时输入的包)更改“com.example.testapp”。

答案 1 :(得分:0)

答案 2 :(得分:0)

使用Environment.getExternalStorageState()它将提供内部SD挂载点的路径,如&#34; / mnt / sdcard&#34;

答案 3 :(得分:0)

首先,在Android 4.4及更高版本中,您没有可移动媒体的写入权限(例如“外部SD”),但该媒体上可能由

返回的任何位置除外
  

getExternalFilesDirs()和getExternalCacheDirs()。

请参阅戴夫史密斯对此的出色分析,特别是如果你想要低级别的细节。

其次,为了避免任何人对可移动媒体访问是否是Android SDK的一部分进行狡辩,这里是Dianne Hackborn's assessment

...请记住:在Android 4.4之前,官方Android平台根本不支持SD卡,除了两种特殊情况:旧的学校存储布局,其中外部存储是SD卡(仍然支持今天的平台),以及添加到Android 3.0的一个小功能,它将扫描额外的SD卡并将其添加到媒体提供商,并为应用程序提供对其文件的只读访问权限(今天平台仍然支持)。

  

Android 4.4是该平台的第一个版本   允许应用程序使用SD卡进行存储。任何访问它们   在此之前是通过私有的,不受支持的API。我们现在有一个   平台中相当丰富的API,允许应用程序使用   SD卡以受支持的方式,以比他们能够更好的方式   之前:他们可以免费使用他们的应用专用存储区域   不需要应用程序中的任何权限,并可以访问任何其他权限   SD卡上的文件,只要它们再次通过文件选择器   无需任何特殊权限。