2012-01-18 34 views
2

我使用下面的代碼訪問的SD卡,如果安裝其他使用內部存儲器:在Android中檢測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"; 

    } 

但是當我使用第一condition.Could誰能幫助vidoePath沒有找到?

+0

你確認這是你的手機上的一個有效路徑? – JoxTraex 2012-01-18 07:09:31

+0

是的,我當然了! – Navdroid 2012-01-18 07:10:41

+0

向我們展示如何初始化VIDEO_FILENAME。 – XXX 2012-01-18 07:14:17

回答

3

試試這樣做:

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 
} 
+0

這是一個更好的方法。 – JoxTraex 2012-01-18 07:15:37

1

檢查這個代碼也。並且,將此代碼更改爲任何你想要的?

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; 
    } 

試試這個。它可能會幫助你。

而且,檢查你的SD卡檢測條件也是如此。

我從Droid Nova's WebSite採取了這些方法。檢查那個例子。

3
public static boolean isSDCardPresent() { 
    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 
} 

編輯:按照註釋,新versoins更新的答案。

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

爲我的HTC Nexus 9它總是給真實,但現實是,我沒有SD卡在我的手機!!!!!!! 那麼如何解決這個問題呢? – 2016-09-10 07:50:43

+1

這是舊的答案,這是電話過去與SDCARD來的時候,afaik Nexus設備有內部存儲不是SD卡。因此,行爲。 – AAnkit 2016-09-10 19:08:48

+0

謝謝@AAnkit 現在我用這個邏輯解決這個問題 if(isSDCardPresent && System.getenv(「SECONDARY_STORAGE」)!= null){Log.d(「sd_status」,「」adcard available)} else {Log。 d(「sd_status」,「sdcard不可用」)} – 2016-09-11 04:37:58

1
String state = Environment.getExternalStorageState(); 
if (!state.equals(Environment.MEDIA_MOUNTED)) 
    { 
     Toast.makeText(Context, "NO EXTERNAL STORAGE FOUND",Toast.LENGTH_LONG).show(); 
    } 
else 
    { 
    //Your code     
    }