애플리케이션 내에서 파일 생성을 해주고 PC를 연결해서 확인하려고 하면 보이지 않는 경우가 발생한다.
그 이유는 파일 생성을 하였는데 Android에서는 파일 생성에대해서 알지못하기 때문에 케이블을 연결해도 파일이 있는지도 모르는 것이다.
핸드폰을 재부팅 후 케이블을 연결해주면 그 때에는 파일을 인식하는 것을 볼 수 있다.
사용자에게 재부팅하고 사용하라고 할 수 없으니 처리를 해주어야한다. 파일 생성했다는 것을 안드로이드에게 스캔해주는 방법이다.
방법을 찾기위해서 구글링을 많이 해보았지만.. 넘나 찾기 어려운 것 ..
우선 제가 처리한 방법은 MediaScanning 사용하였다.
1. sendBroadcast 사용
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,"파일 경로 URI"));
Context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
: 저장소 전체를 스캔하는 방법이다. 하지만 젤리빈 이상 버전에서는 오류 생긴다고 한다. 특정 폴더나 특정 파일을 스캔 시켜야한다.
Context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory()+"/temp")));
: 특정 폴더를 스캔하는 방법이다. 버전 타는 경우가 있다고 한다. 테스트를 잘 해보자(전 테스트 해보지 않았습니다. 틀린 내용이 있다면 댓글 적어주세요.)
Context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+ file)));
: 특정 파일을 스캔하는 방법이다. 제가 MediaScanning 사용하게 된 이유는 한 파일을 sendBroadcast 해주면 자원 낭비이기 때문입니다.
2. MediaScannerConnection 사용
이 경우는 파일 하나 하나 체크해야하기 때문에 디렉토리를 스캔해주어야하는 경우는 파일 하나하나를 배열에 넣어서 태워야한다.
MediaScannerConnection.scanFile(Context, new String[]{file.getAbsolutePath()}, null, null);
MediaScannerConnection.scanFile(Context, new String[]{file.getAbsolutePath()}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
// TODO Auto-generated method stub
// 스캔이 성공으로 끝났을 경우.
Log.i("FILE", "OK");
}
});
3. MediaScanning 클래스를 만들어 사용. (사용한 방법)
클래스를 사진 내용대로 생성해주고.
MediaScanning mediaScanning = new MediaScanning(Context, file);
스캔할 file을 가지고 호출해주면 !! 보인다.!
참고한 사이트 :
https://stackoverflow.com/questions/13737261/nexus-4-not-showing-files-via-mtp
http://darphin.tistory.com/34
http://egloos.zum.com/dalgopower/v/4380780
https://stackoverflow.com/questions/13507789/folder-added-in-android-not-visible-via-usb
'Android Studio' 카테고리의 다른 글
[안드로이드] android aar파일 적용시키기 (0) | 2017.05.30 |
---|---|
[안드로이드] android press 버튼 (0) | 2017.05.26 |
[안드로이드] android library aar 만들기 (1) | 2017.05.17 |
[안드로이드] android file AES 암호화 복호화 (0) | 2017.05.11 |
[안드로이드] android http Request Method (0) | 2017.05.08 |