Android市场如何安装应用程序?

3

这更像是了解Android市场的一般知识。首先,我很抱歉要在这里问。我搜索了很长时间,但仍然不理解。所以,我们开始吧。

据我所知,packageInstaller在Android上安装应用程序。它在执行安装之前会请求用户权限。

所以我的问题是“Android市场是否使用packageInstaller或者自己进行安装?”

如果它不是,那么有几件事情我不清楚。

  • 我非常确定权限是从AndroidManifest.xml文件中提取的。在下载之前,Android Market怎么知道应用程序需要哪些权限?(我猜Android Market Web-end在上传apk时记录了权限)

  • Android Market在下载apk之前要求用户同意权限。如果用户同意并下载,安装将在下载后立即进行(即无需启动packageInstaller)。这怎么可能?

  • 作为第三方应用程序,任何应用程序都可以像Android Market一样执行相同的工作吗?

1个回答

2

所以,我认为我可以问一些你的问题。包安装程序不用于从Android Market安装应用程序-它自己进行安装。

  1. 我不确定,但我认为对于第一个问题,你是正确的。Android市场了解应用程序需要的权限。它还可以简单地解析应用程序的AndroidManifest文件。
  2. 这是通过GTalkService完成的。您可以在此处了解更多信息。
  3. 通常情况下不行。但是,如果您的应用程序使用系统签名进行签名,则可以。

谢谢您的回答。您能详细说明一下第三点吗? - PH7
据我所知,安装应用程序所需的组件受到签名或系统权限的保护。 - Yury
好的。我在 Google 群组中偶然发现了这个链接[http://groups.google.com/group/android-developers/browse_thread/thread/fe47bc6c72914df0],似乎没有绕过 PackageInstaller 在 Android 上安装应用程序的方法。 - PH7
但是AppBrain使用他们快速的Web安装程序成功地完成了这项工作。它在手机上完成任务而无需交互。@Yury是正确的,这与GTalkService有关。我很想知道他们是如何做到的,希望有人能提供一些信息 :) - dackyD
GTalkService 实际上是在正常的 Android 市场安装过程中使用的。不需要从市场下载 APK,而是点击“安装”将触发谷歌服务器通过 GTalkService 管道推送 INSTALL_ASSET 消息。收到此消息后,您的手机将下载和安装 APK。我不确定,但我认为要使用 AppBrain,您需要为市场安装一个应用程序。之后,我认为 AppBrain 将注册 C2DM 服务并等待来自服务器的消息。之后它的工作方式类似于 Android 市场,但最终只需调用包管理器来安装包。 - Yury
@Yury 不是这样的。我只是封锁了GtalkService端口(5228)。GtalkService已经离线,但市场和其他谷歌应用程序都可以正常工作。看起来,谷歌改变了应用程序的安装过程。 - Aprel

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