2013-01-23 4 views
3

인 텐트를 사용하여 Android (4.0)에서 로컬 파일을 열려고합니다. 다음은 작업을 수행하는 코드입니다. 이 파일을 특별한 공백이없는 한 잘 작동합니다 (예 : 파일 /data/data/com.xxxx.yyyy/files/Downloads/Documents/ProductFeature.pptx 경우, 잘 열리지 만 파일 name은 /data/data/com.xxxx.yyyy/files/Downloads/Documents/Product Feature.pptx (이름에 공백을 적어 둡니다)이면 실패합니다 .Uri.fromFile은 공백을 올바르게 인코딩하지만 다른 응용 프로그램은 보이지 않습니다. 를 해석하고 개방 실패 보인다합니다 나는 또한 "파일 : //"를 사용하려고공백이있는 로컬 Android 파일 열기

 Intent intent = new Intent(); 
    intent.setAction(android.content.Intent.ACTION_VIEW); 

    Uri uri = Uri.fromFile(new File(selectedEntry.get(Defs.PATH_KEY))); 
    System.out.println("openFileWith: File to open: " + uri); 

    intent.setDataAndType(uri,type); 
    startActivity(Intent.createChooser(intent, "Open With ...")); 

.. 많은 도움없이 + 인코딩되지 않은 경로를

을 그래서 당신은이 조건을 처리 어떻게 어떤 도움이

을 감사?
+0

""대신 "\"을 입력하십시오. 그래도 잘 모르겠다. 그냥 시도 해봐. – pvn

+0

공백을 + 기호 또는 % 20으로 바꾸거나 이름 주위에 큰 따옴표를 추가해보십시오. – SylvainL

+0

@pvn 나는 그것을 시도하고 도움이되지 않습니다. 제안 해 주셔서 감사합니다. 나는 전에 그것을 시도하지 않았다. – rydgaze

답변

1

공백을 "\ "으로 바꿔야합니다. String.replace()을 사용하는 경우 슬래시도 이스케이프 처리해야합니다 ("\\ ").

0

내게 가장 큰 문제는 파일을 내부 저장소의 응용 프로그램 디렉토리에 저장하는 것으로 밝혀졌으며 파일에 대한 액세스 권한을 명시 적으로 부여해야했습니다. chmod 755 명령을 사용하여 권한을 부여했습니다. 그러나 공백이있는 파일은 권한이 올바르게 설정되지 않아 해당 파일을 열 수 없습니다.

나는 외부 (Activity.getExternalFilesDir())를 사용하기 위해 이동했으며 그 폴더는 다른 모든 응용 프로그램에 대한 액세스 권한을 허용하고 그 문제를 해결했습니다.