PackageManagerにAPIがありません

私は、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 ですが、参照ページgoogleではこのAPIを非表示にしています。

だから私の質問はどのように私はそのようなAPIにアクセスできますか?

ご協力いただきありがとうございます。

親切な意見、 ネサス。

0

2 答え

SDK開発者の生活を簡素化するために公表されました。しかし、それは外部の開発者から呼び出されることは決してありませんでした。 この投稿も参照してください。

しかし、このメソッドを本当に呼び出す必要がある場合は、リフレクションを使用できます。正式なAPIを使用して代替ソリューションを検討することをお勧めします。

1
追加された
はい、研究の後、私は反射を試みましたが、これらの2つのAPIに関して、システムは、アプリケーションがINSTALL_PACKAGES権限を持っていないというSecurityExceptionに訴えました。
追加された 著者 user1105115,
stackoverflow.com/questions/5803999 /… によれば、このアプリは公式の証明書で署名されている必要があります。申し訳ありませんが、上記のクイックアンサーを編集することはできませんので、ここに追加してください。
追加された 著者 user1105115,

一般的に、アプリケーションでは「非表示」のAPIを使用しないでください。これらの方法は内部使用のためのものであり、予告なく変更または削除することができます。アクセス権の制限のため、システム以外のアプリケーションでは利用できないことがよくあります。アプリケーションでこれらのAPIを使用する場合は、プラットフォームビルド内でアプリを構築することができます。

また、アプリケーションを構築するための回避策もありますEclipseで隠されたAPIを使用する:あなたはプラットフォームビルドからコンパイルされたフレームワークライブラリを収集し、 "User library"、 framework_intermediates/classes-full-debug.jar "パッケージマネージャー。

1
追加された
この回避策を共有してくれてありがとう、Darth。しかし、一歩前進、二歩後退。 SecurityExceptionは、これらのAPIの使用を妨げます。ここやその他の情報源を調べた後、ユーザーの介入なしにファイルをプログラムでインストールする方法はないようです。
追加された 著者 user1105115,