相关疑难解决方法(0)

如何获得Android 4.0+的外部SD卡路径?

三星Galaxy S3有一个extrenal SD卡插槽,安装到/mnt/extSdCard.

我的问题是:如何通过类似的方式获得这条路径Environment.getExternalStorageDirectory()?这将返回mnt/sdcard,我找不到外部SD卡的API.(或某些平板电脑上的可移动USB存储器)

谢谢!

android android-sdcard

91
推荐指数
9
解决办法
17万
查看次数

Android获得内部/外部内存的免费大小

我想以编程方式获取设备内部/外部存储空闲内存的大小.我正在使用这段代码:

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
Log.e("","Available MB : "+megAvailable);

File path = Environment.getDataDirectory();
StatFs stat2 = new StatFs(path.getPath());
long blockSize = stat2.getBlockSize();
long availableBlocks = stat2.getAvailableBlocks();
String format =  Formatter.formatFileSize(this, availableBlocks * blockSize);
Log.e("","Format : "+format);
Run Code Online (Sandbox Code Playgroud)

而我得到的结果是:

11-15 10:27:18.844: E/(25822): Available MB : 7572
11-15 10:27:18.844: E/(25822): Format : 869MB
Run Code Online (Sandbox Code Playgroud)

问题是我想获得1,96GB现在的SdCard的免费记忆.如何修复此代码,以便获得免费大小?

android diskspace android-sdcard

89
推荐指数
10
解决办法
8万
查看次数

用于存储文件的Android Open External Storage目录(sdcard)

我想打开外部存储目录路径以编程方式保存文件.我试过但没有获得SD卡路径.我怎么能这样做?有什么解决方案吗?

private File path = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "");
Run Code Online (Sandbox Code Playgroud)

要么

private File path = new File(Environment.getExternalStorageDirectory() + "");
Run Code Online (Sandbox Code Playgroud)

我尝试从两个方法上面获取路径,但两者都指向内部存储器.

当我们打开存储器时,如果sdcard没有,它将显示如下 - 在此输入图像描述

设备存储和SD存储卡.

我想通过编码获得sd内存路径.我已经在清单中给予了许可 -

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

android sd-card android-sdcard android-external-storage

36
推荐指数
3
解决办法
23万
查看次数

获取连接到Android设备的所有存储设备的路径列表

我想获取连接到Android设备的所有存储设备的列表.

例如 - 内部存储(存储所有文件夹,如下载,DCIM等),SD卡和OTG设备.

我知道有很多StackOverflow帖子讨论了这个主题,但没有一个可以满足我的目的,如上所述.

我可以通过调用Environment.getExternalStorageDirectory().getPath()返回内部存储的路径来获取内部存储.

对此的任何帮助都将非常感激,因为没有标准的AFAIK可以使用它来检索所有连接的存储设备的列表.

此外,许多解决方案不适用于不同的设备和Android版本.

java android sd-card android-sdcard usb-otg

15
推荐指数
1
解决办法
1794
查看次数

Environment.getExternalStorageDirectory()方法的Android文档不完整

参考:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

寻址具有多个"外部"存储目录的设备的段落有一个悬而不决的句子,解释了如何处理二级存储:

"在具有多个"外部"存储目录的设备中,此目录表示用户将与之交互的"主"外部存储.可通过"访问辅助存储"

"穿过"之后会发生什么?

这个问题已经在这里开放,但似乎没有人关心.

如果有人知道访问辅助存储的方法是什么,请在此处回答.

谢谢.

android

8
推荐指数
1
解决办法
277
查看次数

为什么我可以写"mnt/sdcard"而不是"mnt/extsd"?

我正在尝试将文件存储到外部存储(Android 4.2.2).

我在manifest.xml中使用了正确的权限:

<manifest ...>
   ...
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
   ...
Run Code Online (Sandbox Code Playgroud)

外部SD卡可用,我可以使用其他应用程序来读取和写入文件.路径/ mnt/extsd /有效,请看下面的图片.外部SD卡是可写的,因为我可以将文件复制/粘贴到其中.

在此输入图像描述

代码:

try {
    String path = "/mnt/extsd/file.dat"
    File f = new File(path);
    f.createNewFile();
    return true;
} catch (Exception e) {
    e.printStackTrace();
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误f.createNewFile();:

W/System.err(2172): java.io.IOException: open failed: EACCES (Permission denied)
W/System.err(2172):     at java.io.File.createNewFile(File.java:948)
W/System.err(2172):     at solarapp.activities.settings.application.ActivityBackup$BackupTask.doInBackground(ActivityBackup.java:77)
W/System.err(2172):     at solarapp.activities.settings.application.ActivityBackup$BackupTask.doInBackground(ActivityBackup.java:1)
W/System.err(2172):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
W/System.err(2172):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
W/System.err(2172):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
W/System.err(2172):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
W/System.err(2172):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
W/System.err(2172):     at java.lang.Thread.run(Thread.java:856)
W/System.err(2172): Caused by: …
Run Code Online (Sandbox Code Playgroud)

java storage android android-manifest android-sdcard

6
推荐指数
1
解决办法
1910
查看次数

getExternalStorageDirectory() 和 getDataDirectory() 之间的区别

我正在尝试获取 Android 设备的内部和外部存储路径。

这就是我在大多数设备中获取内部存储路径的方式

Environment.getExternalStorageDirectory().getPath()
Run Code Online (Sandbox Code Playgroud)

上述方法适用于大多数设备,但某些设备此方法会出现问题,即它返回 SD 卡路径。

有人可以告诉我如何准确获取那些Environment.getExternalStorageDirectory().getPath()返回外部存储路径(SD 卡路径)的设备中的内部存储路径。

我也知道,Environment.getDataDirectory().getPath()但此方法返回值类似于/data同一 Environment.getExternalStorageDirectory().getPath()设备返回/storage/sdcard0的值,当 SD 卡不存在时,该值指向内部存储,但当 SD 卡存在时,它会给出指向 SD 卡而不是内部存储的路径。

谁能帮助我理解上述两者之间的区别,并帮助我获取Android设备的内部存储路径?另外,请帮助我找到一个适用于所有设备的解决方案。

编辑:任何认为这篇文章不合适的人请发表评论并让我知道原因,以便我将来牢记这一点。

java storage android android-sdcard android-external-storage

5
推荐指数
1
解决办法
6669
查看次数

如何列出其他外部存储文件夹(挂载点)?

默认情况下,Android上的"外部"存储显示为/ sdcard文件夹.在某些设备上,它不是SD卡而是内部存储器.

某些设备允许附加额外的SD卡,或者在Asus Transformer的情况下,还可以附加2个USB闪存盘.

这样添加的内存驱动器显示为某个文件夹,该位置取决于设备制造商.在某些设备上,它位于/ sdcard文件夹中,而在其他设备上则位于其他文件夹中的其他位置.

现在我的问题是,如果有一些功能可以列出除标准/ sdcard文件夹之外的所有可能的外部存储器.

android

4
推荐指数
2
解决办法
2万
查看次数

获取所有名称为 android 的存储和设备

我已经找到了如何使用以下任一答案获取所有存储:使用 proc/mounts使用 mount 命令,但现在我想在返回的路径上命名。我对内部存储没有问题,但是这些方法无法区分 SD 卡和 U 盘。如果它看到连接了两个驱动器,我如何确定哪个是 SD 卡,哪个是 USB,或者它们是两个 SD 卡?还是两个U盘?

usb android mount android-sdcard

0
推荐指数
1
解决办法
2669
查看次数