2014-12-24 3 views
1

SD 카드를 Android 기기에서 제거했을 때 실행해야하는이 코드는 사용자가 USB를 제거한 것처럼 Android 기기 메뉴 또는 구성에서 remove을 선택하여 삭제 한 것으로 이해합니다. 장치 또는 다른 시스템에서 SD 카드, 전 phisically) 카드를 제거 :Android SD 카드 감지 오류

public void kartkontrol() 
{ 
    String state = android.os.Environment.getExternalStorageState(); 
    if (state.equals(android.os.Environment.MEDIA_MOUNTED)) 
    { 
     // We can read and write the media 
     Durum=" Hafıza Kartı Var (Okuma/Yazma)"; 

    } 
    else if (android.os.Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) 
    { 
     // We can only read the media 
     Durum=" Hafıza Kartı Var  (Okuma İzni)"; 
    } 
    else 
    { 
     // No external media 

     Durum=" Hafıza Kartı Yok"; 
    } 
} 

카드를 제거하고 제거하지만, 실제로이 과정에서 설치되어 보인다되어야한다.

내가 뭘 잘못하고 있니?

답변

0

코드,하지만 마운트 해제해야합니다 :

당신은 대신이 유용한 방법을 사용할 수 있습니다. 다른 코드로이 문제를 해결했습니다. 부드럽게 달리기. 문제 없음

sSDpath = null; 
     fileCur = null; 


for (String sPathCur : Arrays.asList("ext_card", "external_sd", "ext_sd", "external","extSdCard", "externalSdCard")) // external sdcard 
     { 
      fileCur = new File("/mnt/", sPathCur); 
      if (fileCur.isDirectory() && fileCur.canWrite()) { 
       sSDpath = fileCur.getAbsolutePath(); 

       kartk.setText("Hafıza Kartı Takılı"); 
       Toast.makeText(getApplicationContext(), "kkkBirinci", Toast.LENGTH_LONG).show(); 
       break; 
      } 
     } 
     fileCur = null; 
     if (sSDpath == null) { 

      sSDpath = Environment.getExternalStorageDirectory().getAbsolutePath(); 

      kartk.setText("Hafıza Kartı Takılı Değil"); 
      Toast.makeText(getApplicationContext(), "kkkikinci", Toast.LENGTH_LONG).show(); 
     } 
0

자세한 내용은 Android documentation에서 확인할 수 있습니다.

USB를 통해 마운트 된 sd 카드를 감지하는 데 유용한 post이 있습니다. 나는 카드가 장착 제거 할 때

static public boolean hasStorage(boolean requireWriteAccess) { 
    //TODO: After fix the bug, add "if (VERBOSE)" before logging errors. 
    String state = Environment.getExternalStorageState(); 
    Log.v(TAG, "storage state is " + state); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     if (requireWriteAccess) { 
      boolean writable = checkFsWritable(); 
      Log.v(TAG, "storage writable is " + writable); 
      return writable; 
     } else { 
      return true; 
     } 
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     return true; 
    } 
    return false; 
}