2011-02-10 5 views
8

먼저 물어 보면 미안하지만 찾을 수는 없습니다. 원격 리소스에서 내 응용 프로그램의 문서를 다운로드합니다. 문서가 다운로드되면 사용자를 위해 문서를 열고 싶습니다. 내가 알고 싶은 것은 그들이 Pdf 나 Tiff를 처리하고 그것들을위한 기본 응용 프로그램에서 실행할 응용 프로그램이 있는지 어떻게 확인합니까?Android : 내 앱에서 기본 앱에 저장된 파일 열기

감사합니다.

편집 여기

는 솔루션의 일부입니다

Intent viewDoc = new Intent(Intent.ACTION_VIEW); 
viewDoc.setDataAndType(
    Uri.fromFile(getFileStreamPath("test.pdf")), 
    "application/pdf"); 

PackageManager pm = getPackageManager(); 
List<ResolveInfo> apps = 
    pm.queryIntentActivities(viewDoc, PackageManager.MATCH_DEFAULT_ONLY); 

if (apps.size() > 0) 
    startActivity(viewDoc); 

답변

7

1 단계 : 다운로드 한 파일에 Uri을 제공하기 위해 setDataAndType()를 사용하여, ACTION_VIEWIntent 만들기 (예를 들어, Uri.fromFile()) 및 내용의 MIME 유형 (예 : application/pdf)

단계 #의 2A : 사용 PackageManagerqueryIntentActivities()Intent

거기에서

, 두 가지 옵션이 있습니다. 길이가 0 인 목록을 반환하는 경우 후보자가 없으므로 어떤 단추, 메뉴 선택 항목이나에있는 Intent을 호출 할 수있는 모든 항목을 해제 할 수 있습니다.

또는

단계 #의 2B : 사용자가이를 볼 수 있으며, 설치 지원되는 응용 프로그램이없는 경우 발생하는 예외를 잡을하고자 할 때 그냥 startActivity()를 호출합니다. 위의 # 2a보다 간단하지만 사용자에게 친숙하지는 않습니다.

+0

파일의 바이트 []가 있으면이 방법은 여전히 ​​작동하지 않을까요? 디스크에 넣었습니까? –

+0

@ Tom Fobear : 다른 응용 프로그램에서 읽을 수있는 위치에 디스크에 저장하는 것 외에는 선택할 수 없습니다. 즉, 외부 저장소에 저장하거나 앱 로컬 파일 저장소에 'MODE_WORLD_READABLE' 파일로 저장하거나 앱 로컬 파일 저장소에 일반 (거부) 파일로 저장하고 콘텐츠 공급자를 사용하는 것입니다 다른 앱에서도 사용할 수 있도록합니다. – CommonsWare

+0

문제가 생겼을 때 내 장치에 PackageManager 메소드를 사용하여 내 의도를 지원했다고 주장하는 여러 앱이있었습니다. 파일이 올바르게 저장되고 있음을 알았습니다. 예를 들어 어도비 리더를 다운로드하고 나면 필자의 활동에서 시작한 pdfs를 볼 수 있습니다. 가능한 선택 사항을 하드 코딩하는 것 외에 좋은 앱을 확인하는 더 합법적 인 방법이 있습니까? 고맙습니다. –

1

다음 코드는 파일을 당신에게
쓰기 만들 핸드셋에 존재하는 기본 응용 프로그램을 엽니 다

File myFile = new File("your any type of file url"); 
FileOpen.openFile(mContext, myFile); 

코드의 주요 기능에 파일의 URL을 얻기 위해이 코드를

코드를 도움이 될 수 있습니다 다른 클래스

+0

Plz 그것이 작동 여부를 알려주십시오 ... 감사합니다 –

관련 문제