相关疑难解决方法(0)

找到可移动SD卡的位置

是否有通用的方法来查找外部SD卡的位置?

请不要与外部存储混淆.Environment.getExternalStorageState()返回内部SD挂载点的路径,如"/ mnt/sdcard".但问题是关于外部SD.如何获得像"/ mnt/sdcard/external_sd"这样的路径(它可能因设备而异)?

我想我将以mount文件系统名称过滤命令结束.但我不确定这种方式是否足够强大.

android external sd-card

199
推荐指数
11
解决办法
25万
查看次数

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上写入外部SD卡的通用方式

在我的应用程序中,我需要在设备存储中存储大量图像.这些文件往往满足设备存储,我想让用户能够选择外部SD卡作为目标文件夹.

我到处读到Android不允许用户写入外部SD卡,SD卡是指外部和可安装的SD卡而不是外部存储器,但文件管理器应用程序设法在所有Android版本上写入外部SD.

在不同的API级别(Pre-KitKat,KitKat,Lollipop +)上授予对外部SD卡的读/写访问权限的更好方法是什么?

更新1

我从Doomknight的答案中尝试了方法1,但没有结果:正如您所看到的那样,我在尝试在SD上写入之前在运行时检查权限:

HashSet<String> extDirs = getStorageDirectories();
for(String dir: extDirs) {
    Log.e("SD",dir);
    File f = new File(new File(dir),"TEST.TXT");
    try {
        if(ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED) {
            f.createNewFile();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我在两个不同的设备上尝试了访问错误:HTC10和Shield K1.

10-22 14:52:57.329 30280-30280/? E/SD: /mnt/media_rw/F38E-14F8
10-22 14:52:57.329 30280-30280/? W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
10-22 14:52:57.329 30280-30280/? W/System.err:     at java.io.File.createNewFile(File.java:939)
10-22 14:52:57.329 30280-30280/? W/System.err:     at com.myapp.activities.TestActivity.onResume(TestActivity.java:167)
10-22 14:52:57.329 30280-30280/? W/System.err:     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1326)
10-22 14:52:57.330 30280-30280/? W/System.err:     at android.app.Activity.performResume(Activity.java:6338)
10-22 14:52:57.330 …
Run Code Online (Sandbox Code Playgroud)

java android android-sdcard android-external-storage

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

如何获取Android设备的已安装外部存储列表

在这里,我们正在为Android电视盒开发Android应用程序.如何获取已安装的外部存储列表USB stick, SDCARD and SATA HDD.

android

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

Android的外部SDCard文件路径

Android设备上外部SDCard的文件路径始终是"/ storage/extSdCard"吗?如果没有,有多少变化?

我需要它来为我的应用程序测试外部 SD卡的可用性.

我正在使用Titanium,它有一个方法Titanium.Filesystem.isExternalStoragePresent() 但它总是返回true,即使没有安装外部SDCard.

我认为它在本地存储中检测到SDCard因此返回true.但我真正想要的是检测物理SD卡是否已安装.

我可以通过单独检测文件"/ storage/extSdCard"的存在来做到这一点吗?

谢谢.

android external sd-card titanium android-sdcard

15
推荐指数
3
解决办法
6万
查看次数

如何以编程方式获取android6.0中的SD_Card路径

我试图通过使用如下所示的外部存储路径来检查设备是否具有外部存储器

 if (new File("/ext_card/").exists()) {
        specialPath = "/ext_card/";
    } else if (new File("/mnt/sdcard/external_sd/").exists()) {
        specialPath = "/mnt/sdcard/external_sd/";
    } else if (new File("/storage/extSdCard/").exists()) {
        specialPath = "/storage/extSdCard/";
    } else if (new File("/mnt/extSdCard/").exists()) {
        specialPath = "/mnt/extSdCard/";
    } else if (new File("/mnt/sdcard/external_sd/").exists()) {
        specialPath = "/mnt/sdcard/external_sd/";
    } else if (new File("storage/sdcard1/").exists()) {
        specialPath = "storage/sdcard1/";
    }
Run Code Online (Sandbox Code Playgroud)

但是在棉花糖中,我无法找到这条路径,在使用ES FILEMANAGER进行检查时,他们会在Moto G第3代中提供类似存储/ 3263-3131.在检查其他棉花糖设备时,数字会有所不同.请帮我检查棉花糖设备是否有外部存储?如果找到存储意味着如何获取该外部存储的路径?

注意: - 我在我的应用程序中授予了存储权限,并在我的应用程序的设置中启用了存储权限.

提前谢谢,你在我的问题中发现任何错误请crt它.再次感谢你.

android android-6.0-marshmallow

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

Android Access外部存储

我正面临一些存储问题.我正在开发一个应用程序,我必须访问手机的外部存储和外部sdCard存储,我得到这个代码

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

但是当存在onBoard外部存储器时,此代码将返回onBoard内存的路径,而不是外部sdCard,同时安装了sdCard

现在的问题是..我想访问两个记忆onBoard和外部SD卡是否有任何方式来访问这两个记忆

storage android

7
推荐指数
1
解决办法
3万
查看次数

如何获得外部存储的路径?

我正在尝试将文件写入手机.

我曾经Environment.getDataDirectory()知道内部存储的路径并Environment.getExternamStorageDirectory()知道外部存储的路径.

但是当我使用Environment.getExternalStorageDirectory()路径时,文件是在内部存储中创建的.当我使用Environment.GetDataStorage()路径时,文件不会被创建.(这不确定,但我至少在资源管理器应用程序中找不到.)

我认为我的手机的内部存储被视为外部存储.(在我的情况下,它有32GB的存储空间)

我想知道可移动存储(例如micro SD card)路径.我该怎么办?

android

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

getExternalStorageDirectory 返回手机存储 - 不是 sdcard

你好这个(getExternalStorageDirectory)返回手机存储。如何获得手机存储SDCARD?

java android

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

在RecyclerView中显示带有视频文件的文件夹

我在回收站视图中列出了所有媒体文件.假设媒体文件在文件夹中,那么我想在我的回收站视图中显示该文件夹.这是我列出媒体文件的代码

var projection = arrayOf(MediaStore.Video.Media.DISPLAY_NAME)
var cursor = CursorLoader(applicationContext, MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
    projection, null, null, null).loadInBackground()

if (cursor != null) {
    while (cursor.moveToNext()) {
        val name = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DISPLAY_NAME))
        Log.i("Main", name)
    }
    cursor.close()
}
Run Code Online (Sandbox Code Playgroud)

如果文件夹中存在特定媒体文件,我还如何显示该文件夹.任何帮助将不胜感激.

android mediastore kotlin android-recyclerview

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