为什么签名为空



大家好!
我试过这个代码:

PackageInfo info = mContext.getPackageManager().getPackageArchiveInfo(absolute_apk_name, PackageManager.GET_SIGNATURES);
        if (info != null)
        {
            Signature[] sig = info.signatures;
            if (sig != null)
                sigstring = new String(sig[0].toChars());
        }

但是info.signatures == null,我不知道"为什么?"
absolute_apk_name中的文件存在,我检查了Android 2.1

乌利希期刊指南:

absolute_apk_name = "/data/data/ru.UseIT.SimpleFormsLauncher/files/SimpleFormsGeneral.apk"  

apk是用标志Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE创建的

但是如果执行这段代码

Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setDataAndType(Uri.fromFile(new File(absolute_apk_name )), "application/vnd.android.package-archive");
        mContext.startActivity(intent);

已安装

我检查了Android源代码,结果是PackageManager#getPackageArchiveInfo(String, int)不包括签名,如果Android版本是2.3.7及以下。

请看下面的链接。

http://tools.oesf.biz/android-2.3.7_r1.0/xref/frameworks/base/core/java/android/content/pm/PackageManager.java # 1891

http://tools.oesf.biz/android-4.0.3_r1.0/xref/frameworks/base/core/java/android/content/pm/PackageManager.java 2121

这是android系统的bughttps://code.google.com/p/android/issues/detail?id=9151#c8此错误已修复4.0+

我不太确定你想要实现什么,但是使用绝对apk名称/路径是不正确的,你需要packagename。我已经能够使用以下代码获得签名,只需替换"com.android。Chrome",加上你想要的应用程序的包名。

final PackageInfo pkgInfo = packageManager.getPackageInfo(
                    "com.android.chrome", PackageManager.GET_SIGNATURES);
final Signature[] signatures = pkgInfo.signatures;

相关内容

  • 没有找到相关文章

最新更新