2013-05-31 46 views
0

是否允许从Android应用程序中执行另一个过程就像这样:它允许从Android应用程序产生进程吗?

Runtime.getRuntime().exec("dalvikvm ...."); 

我似乎得到一个安全异常,但是,我可以这种方式执行“苏”。

+0

它现在一般工作,但所有的细节必须是正确的。您可能需要指定可执行文件的路径,也可能需要传递参数的方法。有没有理由你不能让android在正常的应用程序中运行代码? (你可以使用清单中的说明符让它在不同的应用程序进程中运行,如果出于某种模糊的理由,你需要这样做) –

+0

我必须嵌入一些遗留代码,用于在出错时执行System.exit()。我可以将其作为服务包装,但即使在服务中,System.exit()也不可取,尽管它可能有效。 – rustyx

+0

你真的应该解决这个问题,以便进行其他的错误处理。但是您可以在清单中声明一项服务在其自己的流程中运行 - 这样Android会照顾到为您启动它的详细信息。否则,如果你真的想弄清楚如何自己启动一个虚拟机(这比一个随机的本机可执行文件更棘手),你可以尝试查看'am'命令的来源 - 但要注意,你可能有一个如果你这样做,很多使用Android API的困难。 –

回答

0

可以通过应用程序的数据目录以这种方式执行进程。例如,在这个项目中,他们执行ffmpeg binary(他们首先将res/raw放入应用的目录)https://github.com/guardianproject/android-ffmpeg-java/tree/master/src/org/ffmpeg/android

我不知道应用程序之外的进程dir。

+1

该文件需要被标记为可执行文件并且可读,而不是在具有noexec挂载标志的分区上。应用程序的专用目录可能是您可以在最近的安全设备上完成此操作的唯一*便携式*位置,但在各种构建中还有其他可能的临时目录。根据拥有应用程序设置的权限位,其他应用程序也可以执行它。 –

相关问题