0

현재 Android에서 앱을 작업 중이며, 내 앱에서 .vtk 파일을 찾아 선택할 수 있습니다.Intents를 사용하여 .vtk 파일을 여는 다른 앱을 실행하십시오.

또한이 .vtk 파일을 여는 "KiwiViewer"라는 앱을 설치했습니다. 태블릿을 수동으로 이동하고 파일 관리 앱을 사용하여 .vtk 파일을 클릭하면 KiwiViewer는 이러한 .vtk 파일을 아무 문제없이 엽니 다.

내 앱에서 동일한 문제가 발생하고 싶습니다. 사용자가 선택한 .vtk 파일을 KiwiViewer에서 열어보고 싶습니다. KiwiViewer의 패키지 ("com.kitware.KiwiViewer")를 알고 있으며 의도적으로 앱을 열 수 있습니다. 그러나 앱에 전달한 .vtk 파일을 열 수 없습니다.

Intent i = new Intent(this.getPackageManager().getLaunchIntentForPackage("com.kitware.KiwiViewer")); 
i.setData(Uri.parse(getIntent().getExtras().getString("ImageURI"))); 
startActivity(i); 

내가 체크 한 데이터가 전송되는이 null가 아닌 (유효하며 그것은 확실히 올바른 파일입니다. 나는 또한 다음을 시도했지만 작동하지 않습니다

다음 중 하나를

Intent i = new Intent(); 
i.setData(Uri.parse(getIntent().getExtras().getString("ImageURI"))); 
i.setPackage("com.kitware.KiwiViewer"); 
startActivity(i); 

그러나, 나는 "활동 찾을 수 없음 예외를."얻을

그것을 내가 그것을 제공하는 데이터를 열리도록 내가 KiwiViewer을 시작할 수있는 방법

?

EDIT : KiwiViewer에 제공되는 URI 경로를 보면 /document/primary:ExperimentData/MHDImage.vtk 인 것 같습니다. KiwiViewer는 이것이 존재하지 않는다고 말합니다. 실제로 경로는 /sdcard/ExperimentData/MHDImage.vtk입니다. 두 사람이 다른 이유는 무엇입니까?

답변

0

KiwiViewer의 소스 코드를보고 나면 데이터를 열 때 콘텐츠가 아니라 파일의 URI 스키마가 필요합니다. 또한 하위 디렉토리 ("ExperimentData/MHDImage.vtk")를 수동으로 추출하고이를 "/ sdcard /"에 연결하여 KiwiViewer가 데이터를 열도록해야했습니다. 나는이 하드 코딩이 위선적 인 것을 알고 있지만 "/ sdcard /"(Environment.getExternalStorageDirectory(). getPath())에 대체 코드를 사용하면 올바른 디렉토리를 얻지 못합니다.

관련 문제