2012-01-18 6 views
2

私は内蔵メモリーを使用して、他のマウントされた場合にSDカードにアクセスするには、次のコードを使用しています:アンドロイドで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

+0

私はしました! – Navdroid

+0

私たちにVIDEO_FILENAMEの初期化方法を教えてください。 – XXX

答えて

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

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

これを試してください。それはあなたを助けるかもしれません。

また、これであなたのsdcard検出条件を確認してください。

私はDroid Nova's WebSiteからこれらの方法を採用しました。その例を確認してください。

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

編集:コメントを1として、新しい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のためには、それは常に真実を与えますが、私の電話にはsdcardがありません!!!!!!! これを解決するにはどうすればよいですか? –

+1

これは古い答えです、それは、SDCARD、afaik Nexusデバイスには、SDDカードではない内部ストレージを持っていたときに電話が使用された時でした。したがって、行動。 – AAnkit

+0

ありがとう@AAnkit 今この問題をこのロジックを使って解決します。 if(isSDCardPresent && System.getenv( "SECONDARY_STORAGE")!= null){Log.d( "sd_status"、 "adcard available)else {Log。 d( "sd_status"、 "sdcard not available")} –

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     
    } 
関連する問題