2014-09-06 4 views
0

내 응용 프로그램은 SQLite DB에 sd 카드를 사용합니다. 장치 및 SD 카드의 일부 데이터 (앱용)는 독점적이므로 암호화해야합니다. sd 카드를 읽을 수 없기 때문에 장치를 다시 시작한 직후 점심을 먹으면 응용 프로그램이 실패합니다 (알림 표시 줄에 sd 카드 준비 중임이 표시됨). 알림 표시 줄에 sd 카드가 준비되었다고 표시되면 모든 것이 정상입니다. 이 질문에서암호화 된 SD 카드가 준비되어 있고 장치 재시작 - SD 카드 상태에서 사용할 준비가되었는지 테스트하십시오.

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

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

:

나는 이것을 테스트하기 위해 노력했다

Check whether the SD card is available or not programmatically

나는이 시도 :에 따라

boolean sdCardOK = false; 

    String state = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      sdCardOK = true; 
     } else { 

    //warn the user and kill the app 

    } 
} 

을 :

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

난 그냥 SD 카드에 테스트 텍스트 파일을 넣고 읽을 수 있습니다. 실패하면 사용자에게 경고하고 앱을 종료하십시오. 그러나 나는 조금 더 나은 것을하고 싶습니다. 안드로이드 OS에서이 정보를 얻을 수 있어야하는 것처럼 솔기가 ...

개발 및 배포에 사용되는 장치는 삼성 탭 4입니다. SD 카드는 PNY 32GB 및 Kingston 32GB입니다. 이 1.put

+0

SD 카드 콘텐츠가 암호화되어 있다면이 질문에 차이가 있습니까? –

+0

아직 SD 카드를 암호화하지 않은 태블릿으로 시도해 보았습니다. 아무 문제도 없다, 모두는 예상대로 작동한다. 나는 어쩌면이 사건에 구글이 생각하지 않았던 것처럼 느껴진다 ... – fallingdog

답변

1

메소드를 실행 한 후

 Timer timer = new Timer(); 
     TimerTask timerTask = new TimerTask() { 
      @Override 
      public void run() { 
       sdpresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 
      } 
     }; 
     timer.schedule(timerTask, 0, 1000); 

, 본 각 1 초를 다시 체크 SD 카드 oncrate이 코드 2.put 메인 클래스

private boolean sdpresent = false; 

에 출원

if sdcard present : sdpresent = true;

+0

맞아, 이건 똑같은 주제에 대한 변형 일 뿐이야. 그것은 단지 작동하지 않습니다. 암호화 된 SD 카드로 이것을 시도한 적이 있습니까? – fallingdog

+0

나는 타이머의 사용을 좋아하지만 그냥 응용 프로그램을 죽이는 대 :) – fallingdog