【问题标题】:automatic install of apk自动安装apk
【发布时间】:2011-05-22 10:31:12
【问题描述】:

我想知道是否可以以编程方式触发卡上 apk 的安装?

【问题讨论】:

  • 不,我打算以这种方式更新我的应用程序。从我的网站下载新的 apk,然后自动安装。
  • 事情已经这样了吗?如果用户选中了“安装非市场应用程序”选项,他们只需浏览下载链接并在成功下载后自动安装应用程序?
  • 无需浏览,只需点击“更新”按钮,收到下载链接,使用Android浏览器下​​载新的apk,然后安装,至少我是这么打算的。自动安装选项会超级好,但我不确定它是如何工作的

标签: android


【解决方案1】:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);

(由anddev.org提供)

【讨论】:

  • 有时可以,有时会报告找不到AndroidManifest文件并取消安装
  • 这表明您可能在下载的 APK 完全刷新到闪存之前调用了startActivity()。我会尝试一次实现这一步骤,首先在您手动放在 SD 卡上的 APK 上使用 startActivity()(例如,adb push、DDMS 文件管理器、从开发机器上挂载/拖动/卸载)。一旦按照您想要的方式工作,请融入下载机制。
  • 我说的确实是这样。但是我观察到,如果 apk 在 sdcard/download 中,则它已安装,但如果放入 sdcard 中,则会生成此错误 04-15 16:51:02.686: ERROR/filemap(215): mmap(0,0)失败:无效参数 04-15 16:51:02.686:WARN/zipro(215):无法映射“/sdcard/myapk.apk”:无效参数 04-15 16:51:02.695:调试/资产(215):无法打开 Zip 存档 '/sdcard/myapk.apk' 04-15 16:51:02.695: DEBUG/filemap(215): munmap(0x0, 0) 失败,即使路径是:INFO/mytag(196):安装路径是:///sdcard/myapk.apk
【解决方案2】:

以防万一有人在寻找此信息.... 如果您想安装一个您还以编程方式下载并存储在您的私人“文件”文件夹(即“/data/data/com.yourapp.name/files”)中的 apk,您需要获取完整路径的 uri首先使用 getFileStreamPath 如下:

File fullPath = getFileStreamPath("name_of_downloaded_app.apk");

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(fullPath), "application/vnd.android.package-archive");
startActivity(intent);

希望这会有所帮助...

【讨论】:

    【解决方案3】:

    看看这是否有帮助:install Apk via Intent。不知道这是否是要走的路。

    【讨论】:

    • 你以前用过这个吗?如果是这样,请指定“包”、“xxx”指的是什么? uri installUri = Uri.fromParts("package", "xxx", null);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多