以编程方式安装/卸载APK(PackageManager与Intents)
我的应用程序将安装其他应用程序,并且需要跟踪已安装的应用程序。当然,这可以通过简单地保留已安装的应用程序列表来实现。但这不是必须的!PackageManager应该负责维护installedBy(a,b)关系。实际上,根据API,它是: 公共抽象字符串getInstallerPackageName(字符串packageName)- 检索安装软件包的应用程序的软件包名称。这可以确定包装来自哪个市场。 目前的做法 使用Intent安装APK Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); startActivity(intent); 使用Intent卸载APK: Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package", getPackageManager().getPackageArchiveInfo(apkUri.getPath(), 0).packageName,null)); startActivity(intent); 显然,这不是例如Android Market安装/卸载软件包的方式。他们使用了更丰富的PackageManager版本。通过从Android Git存储库下载Android源代码可以看出这一点。以下是与Intent方法相对应的两个隐藏方法。不幸的是,它们对外部开发人员不可用。但是也许它们会在未来吗? 更好的方法 使用PackageManager安装APK /** * @hide * * Install a package. Since this may take a little while, the result will * be posted back …