2011-02-01 13 views
1

SD 카드에 저장되어있는 apk 파일을 설치하고 다음과 같은 예외가 발생하면 "android.content.ActivityNotFoundException : 명시 적 활동 클래스 {com.android.packageinstaller/.PackageInstallerActivity}를 찾을 수 없습니다. ". 코드에서 file은 apk 파일의 SD 카드 경로를 나타냅니다.apk programitacally 설치하는 중 오류가 발생했습니다

Intent resultIntent = new Intent(android.content.Intent.ACTION_VIEW); 
resultIntent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive"); 
resultIntent.setClassName("com.android.packageinstaller", ".PackageInstallerActivity"); 
startActivity(resultIntent); 

관리 방법을 알려주세요.

감사 자 베드 칸

+0

'파일'이 유효합니까? – dbm

답변

4

설치 및 PackageInstaller를 사용하여 패키지를 제거하는 방법에 this blog post을 읽을 수 있습니다.

패키지 설치 관리자가 MIME 유형 application/vnd.android.package-archive을 처리하도록 등록되었으므로 의도 클래스 이름을 명시 적으로 지정할 필요가 없습니다. 인 텐트 리졸버가 올바른 것을 찾아야합니다.

또한 사용자가 INSTALL_NON_MARKET_APPS을 활성화 한 경우에만 작업이 성공합니다. 이것은보고있는 오류와 직접적으로 관련이 있습니다. 그러나 그 사실을 잘 알고 있기 때문에 명심해야 할 것이 있습니다.

Intent resultIntent = new Intent(); 
resultIntent.setAction(Intent.ACTION_VIEW); 
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
resultIntent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive"); 

을 그리고

startActivity(resultIntent); 

주 전화 :

0

지금처럼 Intent.FLAG_ACTIVITY_NEW_TASK을 추가하십시오! 이전에 Franci Penov가 언급 한 바와 같이 INSTALL_NON_MARKET_APPS에 관한 조건이 여전히 유효해야합니다!

+0

내 오래된 코드를 간략히 요약 한 후에 빈 생성자로 인 텐트를 만들고 이후에 수동으로 액션을 설정한다는 것을 알게되었습니다. 이것은 수정 된 답변에 반영되었습니다. 그러나 이것이 어떤 차이가 있다면 나는 모른다. 나는 내 코드를 다시 시험해 보았다. 내 솔루션을 작동시키는 "특수한 상황"이 있는지, 아니면 당신이 용감한 시도를 실패했는지 나는 모른다. – dbm

+0

DBM 안녕, 나는 simmiler의 문제에 직면하고 솔루션을 시도했지만 여전히이 오류 "android.content.ActivityNotFoundException 얻고 : 명시 적 활동 클래스 {com.android.packageinstaller/.PackageInstallerActivity}을 (를) 찾을 수 없습니다를, 당신이 AndroidManifest.xml에서이 활동을 선언 했습니까? " 매니페스트 파일에 어떤 권한이 필요합니까 ??? 감사합니다. –

+0

위의 예의 활동 부분에 관심을 가져 주셔서 감사합니다. 거기에 그런 활동이 없기 때문에 AndroidManifest.xml 파일에서 활동을 정의하지 않았습니다. 내가 원래의 대답에 부당하게 쓴 것처럼 Intent에 setClassName 함수를 호출하지도 않았다. 'resultIntent.setClassName (...)'줄을 제거하려고하면 잘 작동 할 것입니다 :-) – dbm

관련 문제