代码之家  ›  专栏  ›  技术社区  ›  Chris Thompson

在Android中有没有任何方法可以访问源代码树中的文件?

  •  0
  • Chris Thompson  · 技术社区  · 15 年前

    这有点不正统,但我想知道是否有一种方法可以访问存储在Android应用程序apk的src树中的文件。我正在尝试使用i-jetty(Android版的jetty实现),而不是将其作为单独的应用程序使用,并手动下载我的war文件,我宁愿把i-jetty烘焙进来。

    但是,为了使用(容易地)标准HTML/JSP,我需要能够给它一个文档根目录,最好是在应用程序的APK文件中。我知道Android专门阻止你访问(免费)实际系统上的东西,所以这可能是不可能的,但我认为它可能访问apk中的某些东西。解决此问题的一个选项是将所有文件存储在res目录中,然后在启动时将其复制到SD卡,但这不允许我在卸载时自动删除这些文件。

    为了让你了解我的尝试,目前,HTML文件存储在org.webtext.android中。

    Context rootContext = new Context(server_, "/", Context.SESSIONS);
    rootContext.setResourceBase("org/webtext/webapp");
    

    返回404错误。

    final URL url = this.getClassLoader().getResource("org/webtext/webapp");
    Context html = new WebAppContext(url.toExternalForm(), "/");
    

    使用NullPointerException放大,因为没有从GetResource调用返回URL。

    任何想法都会非常感谢!

    谢谢,

    克里斯

    编辑 如果有人在寻找类似答案时发现了这一点,我从来没有找到一个很好的答案。我对下面的建议做了一点小小的修改。我创建了一个只有html/jsp内容的war文件(servlet是我手动添加到服务器的,并且能够保存在src树中),并将其存储在assets文件夹中。当应用程序启动时,我将war文件复制到SD卡。当应用程序关闭时,我会删除副本。当然,如果应用程序被杀了,而不是优雅地退出,我没有机会删除它,但这不是一个巨大的交易。

    1 回复  |  直到 15 年前
        1
  •  1
  •   CommonsWare    15 年前

    您可以考虑创建 Context 它支持从 assets/ 目录使用 AssetManager .