【问题标题】:Context load from an APK file in Android从 Android 中的 APK 文件加载上下文
【发布时间】:2011-06-09 12:58:15
【问题描述】:

我正在为 Android 构建一个基于组件的应用程序。简而言之,我想在运行时加载一个 APK 文件并从中执行代码。

我使用DexClassLoader成功加载并实例化了一些类,问题在于读取APK的资源。

我想创建一个自定义的Context 对象,我可以用它来加载这些资源(例如LayoutInflater 实例),类似于createPackageContext(),它不适用于我的应用程序,因为它是仅查看已安装的软件包。

【问题讨论】:

  • 这是您可以尝试的方法(我没有t tried myself, but that was what I thought when I searched the docs): PackageManager.getPackageArchiveInfo` 将返回一个PackageInfo,这将允许您获得一个ApplicationInfo。使用该对象您可以调用PackageManager. getResourcesForApplication给你一个Resources 对象。

标签: android dynamic load apk android-context


【解决方案1】:
            InputStream in = getResources()
                .openRawResource(R.raw.fileName);

然后从这个流中读取。此示例将打开 res/raw/fileName.html 以供阅读。但是,我不明白为什么要以这种有问题的方式从您自己的 apk 文件中加载要执行的类。如果我误解并且您需要从其他一些 apk 文件加载,那么 - 谁阻止打开该文件进行输入并从中读取?它只是一个压缩的 ZIP 存档。我认为您可以构建覆盖数据访问方法的实现,并且您的实例可以包含对从何处读取数据的文件的引用。

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多