使用Intent.View更新Android应用程序

使用Intent.View更新Android应用程序,android,android-intent,Android,Android Intent,我需要开发一个具有自动更新过程的android应用程序。我读了一些帖子,看到了意图。查看以从代码安装/更新应用程序 安装或更新应用程序是否需要root访问权限 提前感谢您可以启动一个意图,该意图将启动APK的安装过程。它将启动正常的Android软件安装程序,这意味着用户将有机会接受或拒绝安装。这样做不需要设备的根目录,但也不能强制用户接受安装。我认为我们可以同意,这将是安全模型中的一个非常糟糕的漏洞。您可以启动一个意图,该意图将启动APK的安装过程。它将启动正常的Android软件安装程序,这

我需要开发一个具有自动更新过程的android应用程序。我读了一些帖子,看到了意图。查看以从代码安装/更新应用程序

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


提前感谢

您可以启动一个
意图
,该意图将启动APK的安装过程。它将启动正常的Android软件安装程序,这意味着用户将有机会接受或拒绝安装。这样做不需要设备的根目录,但也不能强制用户接受安装。我认为我们可以同意,这将是安全模型中的一个非常糟糕的漏洞。

您可以启动一个
意图
,该意图将启动APK的安装过程。它将启动正常的Android软件安装程序,这意味着用户将有机会接受或拒绝安装。这样做不需要设备的根目录,但也不能强制用户接受安装。我认为我们可以同意,这将是安全模型中一个非常糟糕的漏洞。

如果您没有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()以以下方式执行该命令:

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

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

如果您没有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()以以下方式执行该命令:

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

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

谢谢。。。我对它进行了测试,action视图显示了普通的Android软件安装程序,但它显示了web浏览器的“使用完整操作”。存在任何形式来避免此操作,并且仅显示正常的Android安装程序?如果您使用http URL拍摄
意图
,我认为如果不明确输入Android安装程序的包名,您无法避免此操作。另一方面,如果您的自动更新程序下载新的APK并启动指向本地文件的
Intent
,则不应提供web浏览器作为选择。谢谢。。。我对它进行了测试,action视图显示了普通的Android软件安装程序,但它显示了web浏览器的“使用完整操作”。存在任何形式来避免此操作,并且仅显示正常的Android安装程序?如果您使用http URL拍摄
意图
,我认为如果不明确输入Android安装程序的包名,您无法避免此操作。另一方面,如果您的自动更新程序下载了新的APK并启动指向本地文件的
Intent
,那么它不应该提供web浏览器作为选择。