0

誰かがJavaリフレクションでAndroidソースコードの隠しクラスPackageParserを使用したことがありますか?

このクラスとそのメソッドcollectCertificates()をリフレクション方式で取得できますが、メソッドgeneratePackageInfo()でNoSuchMethodExceptionを取得し続けます

int []。classの使い方がよくわからないので、次の文がその問題を引き起こすのではないかと思います。

partypesGeneratePackageInfo [1] =int[]。class;

これが私のコードです:

    private PackageInfo parsePackage(String archiveFilePath, int flags)
        throws Exception, Exception {
    // get class:PackageParser
    Class clsPackageParser = Class
            .forName("android.content.pm.PackageParser");

            ......      

    // get method:collectCertificates
    Class partypesCollectCertificates[] = new Class[2];
    partypesCollectCertificates[0] = clsPackage;
    partypesCollectCertificates[1] = int.class;
    Method methCollectCertificates = clsPackageParser.getMethod(
            "collectCertificates", partypesCollectCertificates);

    // invoke method:collectCertificates
    Object arglistMethCollectCertificates[] = new Object[2];
    arglistMethCollectCertificates[0] = objPackage;
    arglistMethCollectCertificates[1] = flags;
    methCollectCertificates.invoke(objPackageParser,
            arglistMethCollectCertificates);

    // get method:generatePackageInfo
    Class partypesGeneratePackageInfo[] = new Class[3];
    partypesGeneratePackageInfo[0] = clsPackage;
    partypesGeneratePackageInfo[1] = int[].class;
    partypesGeneratePackageInfo[2] = int.class;
    Method methGeneratePackageInfo = clsPackageParser.getMethod(
            "generatePackageInfo", partypesGeneratePackageInfo);

    ......
}
4

1 に答える 1

0

私が見ることができるものについては、の宣言generatePackageInfoは次のとおりです。

public static PackageInfo generatePackageInfo(PackageParser.Package p,
        int gids[], int flags, long firstInstallTime, long lastUpdateTime) {

これが5つのパラメータですPackageParser.Package.class, int[].class, int.class, long.class, long.class

これは公開されたAPIではないため、パラメーターの数がバージョンごとに変わる可能性があります。

于 2012-06-08T03:27:24.897 に答える