2011-12-16 3 views
5

모바일 내부 메모리에 저장된 PDF 파일을 열려고합니다 ... 파일 경로를 Uri에 전달하려고합니다. 나에게이 오류 을 보여주는 것은)내부 메모리에 저장된 PDF 읽기 (파일 경로가 유효하지 않음)

targetFile.exists의

targetFile=new File("/data/data/package Name/app_mydir/test.pdf"); 

      } 

     Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(targetFile), "application/pdf"); 


       startActivity(intent); 
+0

파일 저장 방법은 무엇입니까? 일반적으로 데이터 파일은 루트가 아니라 앱 디렉토리의 "files"폴더에 있습니다. – FoamyGuy

+0

나는 이것을 사용하고있다 디렉토리 = getBaseContext(). getDir ("mydir", Context.MODE_PRIVATE); \t \t \t \t \t file file1 = new File (directory, PdfName); – Reham

+0

"getBaseContext()"를 "YourActivityName.this"로 바꿉니다. 또한 파일을 다른 응용 프로그램에 전달하려고하면 MODE_PRIVATE를 사용할 수 없습니다. – FoamyGuy

답변

0

확인 출력 (.. "파일 경로가 유효하지 않습니다"그러나 나는 내가 옳은 길을 걸었습니다 확신 해요;

이 값이 참이면 경로를 잘못 선택하면됩니다.

+0

나는 그것을 시도했다. .. return return true .. 나는 경로가 뭐가 잘못 됐는지 모른다. – Reham

+0

아마 전체 스택 트레이스를 게시해야한다. –

8

앱의 내부 저장 디렉토리에있는 파일은 기본적으로 애플리케이션 전용입니다. 즉, 어떤 PDF 리더 앱도 해당 파일 을 읽을 수 없다는 것을 의미합니다 (귀하의 앱 pid로 실행되지 않기 때문에 읽기 권한이 주어지지 않음).

Context.MODE_WORLD_READABLE 플래그를 사용하여 다른 앱에 대한 명시적인 읽기 권한이있는 PDF를 저장해야합니다 ( ). 정확하게 수행하는 방법은 data storage documentation을 참조하십시오.

또한 (위의 문서에서 언급 한 바와 같이) 읽기 및 내부 디렉토리 에있는 파일을 작성하는 Context.openFileOutput()Context.openFileInput()를 사용합니다. 이런 경로를 하드 코딩하지 마십시오. 경로가 변경 될 수 있습니다.

관련 문제