以编程方式重新安装应用程序apk而不下载

由于这个恼人的Android限制,我需要用户重新安装我的应用程序,以便其他应用程序可以检测到清单权限。

这对用户来说已经是令人沮丧的事了,但是除此之外,我无法从存储在/ data / app中的apk中重新安装我的应用程序,因此我必须在启动之前将相同版本下载到存储卡通常的安装意图。

我急切地等待有人告诉我我错过了明显的东西! 我画了一张空白的...

提前致谢。

如果您希望看到问题解决,请为此问题做明星演示! 干杯。


编辑 :有了@hackbod的意见,你可以使用下面的代码来启动安装对话框。

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

在我的Jelly Bean设备上,这提供了两个选项:软件包安装程序和验证并安装。 我不知道后者是否会处理以下问题:

  • 以这种方式安装您的应用程序可能会从Play商店中删除它的所有权
  • 我的申请是免费的,所以我无法测试付费问题:

  • 但是,请注意,如果您的应用程序已被锁定(由于应用程序加密,这对JB以JB开头的所有付费应用程序来说是不可避免的),那么这将不起作用,因为您的应用程序可执行文件不可被其他人阅读
  • 尽管hackbod完成了'其他人可读',这表明如果您通过自己的代码执行此操作,对于您自己的应用程序,它可读? 如果你能测试这个,请纠正我,我错了。


    可以想象,您可以通过Context.getApplicationInfo()。sourceDir获取.apk的路径,然后使用该路径启动应用程序安装程序。 但是,如果您的应用程序被向前锁定(由于应用程序加密,这对于JB开始的所有付费应用程序来说是不可避免的),所以这不起作用,因为您的应用程序可执行文件不可被其他人读取。 在这种情况下,您需要将.apk复制到世界可读的地方(例如在外部存储器中)并从那里安装。

    不管你在这里做什么,这都会带来一些不可避免的负面后果:

  • 从您的应用程序进行任何类型的安装的唯一方法是通过旁载用户界面,这是(a)对用户来说是一个非常可怕的体验,并且(b)将要求用户开启装载能够继续。
  • 以这种方式安装你的应用程序可能会从Play商店中删除它的所有权(因为它不再是安装它的)。 这可能意味着用户不能再通过Play商店向您报告崩溃或ANR,或其他负面后果。 我不确定到底会发生什么问题,但我真的不会认为这样会好起来的。
  • 最终,我只是不会建议这样做。 你需要什么权限才能迫使你这样做? 出于许多原因,我不会建议第三方应用程序在大多数情况下声明自己的权限,因为权限周围存在很多不好的用户体验,只有在需要它们之后才能知道。

    链接地址: http://www.djcxy.com/p/85367.html

    上一篇: Reinstall application apk programmatically without downloading

    下一篇: Check my private key from created ssh keys