Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查SD卡是否存在_Android - Fatal编程技术网

Android 检查SD卡是否存在

Android 检查SD卡是否存在,android,Android,我想检查是否有SD卡插入Android设备(目前是Minix Neo X7) 如果我使用: String state = Environment.getExternalStorageState(); if( Environment.MEDIA_MOUNTED.equals( state ) ) { } 我总是对的。 并且“Environment.isExternalStorageRemovable()”始终返回true 有什么想法吗?有点啰嗦,但是 if(Environment.MEDIA_

我想检查是否有SD卡插入Android设备(目前是Minix Neo X7)

如果我使用:

String state = Environment.getExternalStorageState();
if( Environment.MEDIA_MOUNTED.equals( state ) ) {  }
我总是对的。 并且“Environment.isExternalStorageRemovable()”始终返回true


有什么想法吗?

有点啰嗦,但是

if(Environment.MEDIA_UNMOUNTABLE.equals(false) &&  
Environment.MEDIA_UNKNOWN.equals( false ))
{
    if(Environment.MEDIA_REMOVED.equals( false) &&     
        Environment.MEDIA_UNMOUNTED.equals( false )) 
    { //mounted }
}

您可以使用以下代码检测连接到设备的可插入(非模拟)SD卡或usb存储器

public void CHECK_EXTERNAL_STORAGE () {
    File storage_directory = new File("/storage");
    File storage;

    for (int i = 0; i < storage_directory.listFiles().length; i++) {

        storage = storage_directory.listFiles()[i];


        if (storage.getAbsolutePath().contains("emulated")) {
            continue;
        }

        if (storage.getAbsolutePath().equals("/storage/self")) {
            continue;
        }

        if (Environment.getExternalStorageState(storage).equals(Environment.MEDIA_MOUNTED)) {

            if (Environment.isExternalStorageEmulated(storage) == false) {

                final File finalStorage = storage;
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Log.d(TAG, "External SD Card exists. Path: " + finalStorage.getAbsolutePath());
                        text_view2.setText("External Storage exists. Path: " + finalStorage.getAbsolutePath());
                    }
                });
            }
        }

        else {
            Log.d(TAG, "No external Storage detected.");
        }
    }
}
公共无效检查\u外部存储(){
文件存储\目录=新文件(“/storage”);
文件存储;
对于(int i=0;i
您可以像这样检查外部可移动sd卡是否可用

public static boolean externalMemoryAvailable(Activity context) {
File[] storages = ContextCompat.getExternalFilesDirs(context, null);
if (storages.length > 1 && storages[0] != null && storages[1] != null)
    return true;
else
    return false;

}

这很好用。

这可能是一个复制品-基本上,在现代Android设备上,外部存储可能不是SD卡(它可能仍然是内部闪存)。可能是@Aaron的复制品:不,它不是复制品,因为我不想知道路径(我正在使用的设备的路径总是一样的),我必须知道SD卡是否插入或关闭not@AADTechnical:不,它不是复制品。正如我在问题中所述,我已经尝试将getExternalStorageState与Environment.MEDIA_挂载进行比较,结果始终为True检查挂载表,看看它是否挂载在您已知的路径上?