因业务需要,项目需要一些 InstallerPackageName
方面的一些知识,随便看了下,很多开发估计不知道还有这档子事情。阅读资料发现一篇文章讲的还是很全面的,但是有些细节在实践中还是需要补充下。
原文链接:Android:关于InstallerPackgeName的二三事
上面的文章内容有几点要说下:
1、常见的返回值:
com.google.android.packageinstaller
设备默认安装器,这个是特殊机器的包名情况,我通过阅读各版本(2.3-7.1)的 Android 源码,发现都是 com.android.packageinstaller
,不过最终是哪个还得看手机厂商。
2、如何修改渠道号:代码修改
对于 setInstallerPackageName(String targetPackage, String installerPackageName)
而言:
- targetPackage 、installerPackageName 都要求是本机已安装应用的包名;
- installerPackageName:要求调用者 App 的签名和 installerPackageName 所对应的 App 的签名相同,即同为系统签名或者同一个签名文件签发的 App。
以 targetPackage 的 installerPackageName 是否为空的2种情况来说明:
有一个 App(PackageName = A),其 installerPackageName 是 B,App(PackageName = C)想要修改 A 的 installerPackageName,要求 C 必须和 B 是同一个签名文件签发的。
有一个 App(PackageName = X),其 installerPackageName 为空(null),App(PackageName = Z)想要修改 X 的 installerPackageName,要求 Z 传入的 installerPackageName 必须和 Z 自己是同一个签名文件签发的。
PS:如果有什么建议或者问题,可以通过下面的方式和我联系