如何在安卓设备上静默安装应用程序?

6
因此,我在这里找到了#CommonsWare的答案,关于如何允许应用程序像Google Play一样静默地将应用程序安装到手机上。在那里,提到应用程序应该使用固件签名证书进行签名,或者添加应用程序到系统文件夹中。我需要知道的是,如果我将应用程序添加到system\app\或system\priv-app\,那么是否可以将应用程序静默安装到Android设备上?还是需要使用INSTALL_PACKAGES权限?如果是这样,如何操作?
我之所以提出这个问题,是因为我的声望只有10分,所以无法在那里发表评论。
我在这里找到了#inazaruk的答案,但它很复杂,提供的链接已经失效。
1个回答

2
安装应用的程序需要系统签名或者位于system/app或者system/priv-app目录下,即使你有系统签名,安装应用时也需要正确的权限。不同之处在于,你可以获得必要的权限来进行安装。使用权限并不意味着用户会弹出允许安装的提示框。
调用ApplicationPackageManager.installPackage方法来安装应用程序包:http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/java/android/app/ApplicationPackageManager.java#1561
public void installPackage(Uri packageURI, PackageInstallObserver observer,
        int flags, String installerPackageName) {

由于ApplicationPackageManager上有@hide标记,因此您需要使用反射之类的方法来访问它。当调用“Context.getPackageManager”时,会获得一个ApplicationPackageManager。


我认为你说的是要从应用程序端完成。这是否意味着我们不需要固件签名证书,就可以让应用程序在设备上获得完整的安装特权?你能再明确一些吗? - TroublingCushion
1
“需要进行安装的应用程序必须是系统签名或驻留在system/app system/priv-app中”,也就是说,您的安装程序应该是系统签名的。 - JohanShogun
所以,如果我将我的应用程序交给手机制造商(使其成为其设备中的系统应用程序),那么他们应该进行系统签名,对吗? - TroublingCushion
是的,原始设备制造商进行系统签名,他们不应该与任何人分享其用于系统签名的密钥。 :) - JohanShogun
那很有帮助。还有一件事我需要知道。你知道这是如何完成的(OEM系统签名),或者有任何相关的参考资料吗?我一直在搜索到现在。 - TroublingCushion
根据我的了解,这取决于每个原始设备制造商,并且需要您的销售/法律部门与各个制造商联系。据我所知,目前没有提供使平台签名对公众开放的服务(这也不应该是公开的)。 - JohanShogun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接