2012-01-18 2 views
2

Я использую следующий код, чтобы получить доступ к SDCard, если установлено еще во внутренней памяти:Обнаружение Sdcard в Android?

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 не найдена, когда я использую первые condition.Could кто-нибудь помочь?

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

Редактировать: Согласно комментарию, обновляя ответ на новые 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-карты в моем телефоне !!!!!!! Итак, как это решить? –

+1

Это старый ответ, это было время, когда телефон использовался с SDCARD, устройства afaik Nexus имеют внутреннее хранилище, а не SDK. Отсюда и поведение. – AAnkit

+0

спасибо @AAnkit Теперь я решаю эту проблему, используя эту логику if (isSDCardPresent && System.getenv ("SECONDARY_STORAGE")! = Null) {Log.d (доступно «sd_status», «»)} 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     
    } 
Смежные вопросы