[안드로이드] 삼성 갤럭시폰에서 파일도 존재하고 파일크기도 0이 아닌데 FileNotFoundException 에러 나타나는 문제

조회수 1646회

<질문> 삼성 갤럭시폰에서 파일도 존재하고 파일크기도 0이 아닌데 FileNotFoundException 에러 나타나는 문제

구글링해도 제 힘으로 답을 구하지 못해 도움을 청합니다.

도와주시면 정말로 감사하겠습니다.

  1. 테스트 환경 : 폰(삼성 갤럭시S3/갤럭시S5), 파일(MMS에 첨부된 .vcf 주소록파일), 안드로이드 스튜디오 2.3, 윈7(64비트)

아래 코드의 실행 결과 : "파일 OK/2025bytes/주소록 내용을 읽을 수 없습니다."

즉 exists 메소드로 검사하면 파일도 존재하고, length 메소드로 검사하면 파일크기도 0이 아니므로 분명 존재하는 파일입니다.

그런데 BufferedReader/readLine으로 파일을 읽으면 FileNotFoundException 에러를 내고 파일 내용을 읽지 못합니다.

다른 테스트 폰 엘지 G2에서는 정상으로 읽힙니다.

// 주소록 보이기
public void viewVcf(final String filePath) {
    File vcfFile = new File(filePath);
    if (vcfFile.exists()) {
        long lFileSize = vcfFile.length();
        tv_unique.setText("파일 OK/"+lFileSize+"bytes");
        String content = readFile(filePath);
        if (content.isEmpty())
            tv_unique.setText(tv_unique.getText().toString()+"/주소록 내용을 읽을 수 없습니다.");
        else {
            ...
        }
    }
    else {
        report10sec("주소록 파일이 없습니다.");
    }
}
  1. 테스트 환경 : 폰(삼성 갤럭시S3/갤럭시S5), 파일(MMS에 첨부된 .mp4 동영상파일), 안드로이드 스튜디오 2.3, 윈7(64비트)

동영상 파일의 경우도 위와 비슷합니다.

"파일 OK/707989bytes"

// 비디오 재생
public void viewVideo(final String filePath) {
    File videoFile = new File(filePath);
    if (videoFile.exists()) {
        long lFileSize = videoFile.length();
        tv_unique.setText("파일 OK/"+lFileSize+"bytes");
        ...
    }
    else {
        report10sec("비디오 파일이 없습니다.");
    }
}

위 ... 부분의 코드에 따라서 2가지 테스트 결과입니다.

1) startActivity(intent);

삼성폰, 엘지폰 모두 비디오가 재생되지 않습니다.

(엘지) java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

(삼성) java.lang.NullPointerException

2) videoView.start();

엘지폰에서는 정상으로 재생이 됩니다.

삼성폰에서는 에러 로그는 없으나, "재생할 수 없는 동영상입니다./확인" 메시지가 뜨고 비디오가 재생되지 않습니다.

읽어 주셔서 고맙습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)