我们使用类似下面的代码来安装从我们的服务器下载的apk:
public static void install(File file, Activity owner) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),
"application/vnd.android.package-archive");
owner.startActivity(intent);
}
这样做没问题,但是我担心某种类型的攻击者可以用包含某种恶意软件的apk替换服务器上的apk。对于用户来说,可能很难判断这样的安装是否是我们应用程序的合法升级,即使它们出现了确认对话框。
是否可以通过编程方式验证apk中包含的签名密钥是否与我们的应用程序匹配?我知道PackageManager.getPackageInfo的存在,但我无法看到如何使用它来从尚未安装的APK中获取签名。