【问题标题】:Detecting Sdcard in android?在android中检测SD卡?
【发布时间】:2012-02-12 22:52:20
【问题描述】:

如果使用内部存储器安装了其他存储卡,我将使用以下代码访问 sdcard:

 if( android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
    {       
        //File file = Environment.getExternalStorageDirectory();

        videoPath=Environment.getExternalStorageDirectory()+"/cue_learn_data/video_files/"+VIDEO_FILENAME+".mp4";

    }
    else
     {

     videoPath="/cue_learn_data/video_files/"+VIDEO_FILENAME+".mp4";

     }

但是当我使用第一个条件时没有找到 vidoePath。有人可以帮忙吗?

【问题讨论】:

  • 您确认这是您手机上的有效路径吗?
  • 向我们展示如何初始化 VIDEO_FILENAME。

标签: android sd-card android-sdcard


【解决方案1】:

尝试以这种方式进行:

String tmp = "/cue_learn_data/video_files/"+VIDEO_FILENAME+".mp4";
File myFile= new File(Environment.getExternalStorageDirectory(), tmp);

if(myFile.exists()){
    //further processing as your file exists
}
else{
    //seems like your file doesnt exist
}

【讨论】:

  • 这是一个更好的方法。
【解决方案2】:

也检查此代码。并且,将此代码更改为您想要的任何内容?

String Videopath = Environment.getExternalStorageDirectory() + "/whatever you want for folder name";

public void saveScreenshot() 
    {
        if (ensureSDCardAccess()) 
        {
            File file = new File(Videopath + "/" + "your file name" + "your extension");
            FileOutputStream fos;
            try {
                fos = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                fos.close();
            } catch (FileNotFoundException e) {
                Log.e("Panel", "FileNotFoundException", e);
            } catch (IOException e) {
                Log.e("Panel", "IOEception", e);
            }
        }
    }

    /**
     * Helper method to ensure that the given path exists.
     * TODO: check external storage state
     */
    private boolean ensureSDCardAccess() {
        File file = new File(mScreenshotPath);
        if (file.exists()) {
            return true;
        } else if (file.mkdirs()) {
            return true;
        }
        return false;
    }

试试这个。可能对你有帮助。

并且,用这个检查你的 sdcard 检测条件。

我从Droid Nova's WebSite 获取了这些方法。也检查那个例子。

【讨论】:

    【解决方案3】:
       public static boolean isSDCardPresent() {
        return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
    }
    

    编辑:根据评论,更新新版本的答案。

    if(isSDCardPresent() && System.getenv("SECONDARY_STORAGE") != null) { 
        Log.d("sd_status",""adcard available);
    } else { 
        Log.d("sd_status", "sdcard not available"); 
    }
    

    【讨论】:

    • 对于我的 HTC Nexus 9,它总是真实的,但现实是我的手机里没有 SD 卡!!!!!!!!!那么如何解决呢?
    • 这是旧的答案,那是手机使用 SDCARD 的时候,afaik Nexus 设备有内部存储而不是 sdcard。因此行为。
    • 感谢@AAnkit 现在我使用这个逻辑解决了这个问题 if(isSDCardPresent && System.getenv("SECONDARY_STORAGE") != null) { Log.d("sd_status",""adcard available)} else { Log.d("sd_status", "sdcard not available") }
    【解决方案4】:
    String state = Environment.getExternalStorageState();
    if (!state.equals(Environment.MEDIA_MOUNTED))
       {
          Toast.makeText(Context, "NO EXTERNAL STORAGE FOUND",Toast.LENGTH_LONG).show();
       }
    else
       {
         //Your code                
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2010-10-09
      相关资源
      最近更新 更多