2011-12-19 4 views
0

PackageManager에는 installPackage (...)/deletePackage (...)와 같은 공용 API가 있습니다. 으로 표시된 댓글에는으로 표시되어 있지만 여기서는 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/content/pm/PackageManager.java#PackageManager.deletePackage%28java.lang.String%2Candroid.content.pm.IPackageDeleteObserver%2Cint%29으로 표시되지만 참조 페이지는 숨기기를 제공합니다. hide 이 API.PackageManager에서 누락 된 API

제 질문은 어떻게 이러한 API에 액세스 할 수 있습니까?

도움 주셔서 대단히 감사합니다.

친절한 점, Nessus.

답변

1

SDK 개발자의 생활을 단순화하기 위해 공개로 선언되었습니다. 그러나 그것은 외부 개발자들에 의해 호출 될 것으로 기대되지는 않았습니다. this post을 참조하십시오.

하지만 이 실제로 인 경우 리플렉션을 사용해야합니다. 공식 API를 사용하는 대체 솔루션을 둘러 보도록 제안했습니다.

+0

예, 조사를 한 후에 반성을 시도했지만이 두 API에 대해 시스템에서 INSTALL_PACKAGES 권한을 가지고 있지 않은 SecurityException을 신고했습니다. – user1105115

+0

및 http://stackoverflow.com/questions/5803999/install-apps-silently-with-granted-install-packages-permission에는 앱이 현재 테스트 할 수없고 적용 가능한 것으로 보이는 공식 인증서로 서명해야한다고 나와 있습니다. 죄송합니다. 위의 빠른 대답을 편집해서 여기에 추가하십시오. – user1105115

1

일반적으로 응용 프로그램에 "숨겨진"API를 사용하면 안됩니다. 이러한 방법은 내부 용이며 통지없이 변경하거나 제거 할 수 있습니다. 권한 제한으로 인해 시스템이 아닌 응용 프로그램에는 사용할 수없는 경우가 많습니다. 애플리케이션에서 이러한 API를 사용하려는 경우 플랫폼 빌드 내에서 앱을 빌드 할 수 있습니다.

이클립스에서 숨겨진 API를 사용하는 응용 프로그램을 빌드하려면 workaround이 있습니다. 플랫폼 빌드에서 컴파일 된 프레임 워크 라이브러리를 수집하고 경로를 빌드하여 "사용자 라이브러리"로 빌드 할 수 있습니다. framework_intermediates/classes-full-debug.jar은 패키지 관리자로 충분해야합니다.

+0

이 해결 방법을 알려 주셔서 감사합니다. Darth. 그러나 앞으로 나아가고 두 걸음 뒤로. SecurityException은 이러한 API의 사용을 방해합니다. 여기 및 기타 소스를 조사한 후 사용자 개입없이 파일을 프로그래밍 방식으로 설치하는 방법은없는 것처럼 보입니다. – user1105115