2014-12-09 3 views
0

비록 많은 게시물이 있지만 문제는 전화에 inbuild 저장소가 있으면 true를 반환합니다. 나 이런SD 카드가 안드로이드에서 프로그래밍 방식으로 사용 가능한지 확인하십시오

+2

수 있습니다 여부 안드로이드는 [이동식 저장소] (http://commonsware.com/blog/2)를 지원하지 않으므로 안드로이드 SDK에는이 기능이 없습니다. 014/04/09/storage-situation-removable-storage.html)을 4.4 이상으로 사용하고 지원 대상이 4.4+ 이상인 경우 검색 대상을 포함하지 않습니다. – CommonsWare

답변

1

를 사용하여 도움을 사람 : 코드의 뜻 도움이

Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

if(isSDPresent) 
{ 
    // yes SD-card is present 
} 
else 
{ 
// Sorry 
} 
+0

이미 Tab (버전 4.2.2)에서 이것을 테스트하고 메모리 카드가없는 경우이 코드를 사용하여 true를 반환합니다 [email protected] Maurya –

+0

4.4까지 외부 저장소에 대한 실제 지원은 없다고 생각합니다. – nasch

+0

이 방법은 사용 가능한 저장소 카드가 있는지 확인합니다. 장치에 내부 저장소를 비롯한 데이터를 저장하는 카드가 있으면 true를 반환합니다. 따라서 장치에 내부 저장소가있는 경우이 메서드는 항상 true를 반환합니다. – Sudara

0

아래 ...

/** 
* Returns all available external SD-Card roots in the system. 
* 
* @return paths to all available external SD-Card roots in the system. 
*/ 
public static String[] getStorageDirectories() { 
    String[] storageDirectories; 
    String rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     List<String> results = new ArrayList<String>(); 
     File[] externalDirs = myContext.getExternalFilesDirs(null); 
     for (File file : externalDirs) { 
      String path = null; 
      try { 
       path = file.getPath().split("/Android")[0]; 
      } catch (Exception e) { 
       e.printStackTrace(); 
       path = null; 
      } 
      if (path != null) { 
       if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Environment.isExternalStorageRemovable(file)) 
         || rawSecondaryStoragesStr != null && rawSecondaryStoragesStr.contains(path)) { 
        results.add(path); 
       } 
      } 
     } 
     storageDirectories = results.toArray(new String[0]); 
    } else { 
     final Set<String> rv = new HashSet<String>(); 

     if (!TextUtils.isEmpty(rawSecondaryStoragesStr)) { 
      final String[] rawSecondaryStorages = rawSecondaryStoragesStr.split(File.pathSeparator); 
      Collections.addAll(rv, rawSecondaryStorages); 
     } 
     storageDirectories = rv.toArray(new String[rv.size()]); 
    } 
    return storageDirectories; 
} 

// 외부 SD를 확인하려면

String retArray[] = getStorageDirectories(); 
    if (retArray.length == 0) { 
     Toast.makeText(ListenActivity.this, "Sdcard not Exists", Toast.LENGTH_SHORT).show(); 
    } else { 
     for (int i = 0; i < retArray.length; i++) {    
      Log.e("path ", retArray[i]); 
      } 
    }