1

我需要开发一个具有自动更新过程的 android 应用程序。我阅读了一些帖子并看到 Intent.View 从代码安装/更新应用程序。

安装或更新应用程序是否需要 root 访问权限?

提前致谢

4

2 回答 2

1

您可以触发Intent将启动 APK 的安装过程。它将启动正常的 Android 软件安装程序,这意味着用户将有机会接受或拒绝安装。您不需要 root 设备来执行此操作,但您也不能强制用户接受安装。我认为我们可以同意这将是安全模型中的一个非常糟糕的漏洞。

于 2012-09-10T17:20:39.147 回答
0

如果您没有 root 访问权限,则可以通过以下意图安装该应用程序:

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(myFile)),"application/vnd.android.package-archive");
context.startActivity(intent);

请注意,随后将提示用户替换现有应用程序,并提示他实际安装该应用程序。

如果您确实具有 root 访问权限,则可以执行以下命令来安装应用程序:

pm install -r {myFile.getAbsolutePath()}

您可以使用库 RootTools ( https://code.google.com/p/roottools/ ) 通过以下方式执行该命令:

CommandCapture command = new CommandCapture(0, "pm install -r " + myFile.getAbsolutePath());
RootTools.getShell(true).add(command).waitForFinish();

请注意,应用程序在安装后不会自动启动。也无法捕获安装意图(正在安装的应用程序不会收到该事件)。您可以在安装后重新启动设备,然后捕获 ON-Boot-Intent。

于 2013-04-24T07:16:53.013 回答