从Android中的APK文件加载上下文
我正在为Android构建一个基于组件的应用程序。简而言之,我希望在运行时加载APK文件并从中执行代码 我使用从Android中的APK文件加载上下文,android,dynamic,load,apk,android-context,Android,Dynamic,Load,Apk,Android Context,我正在为Android构建一个基于组件的应用程序。简而言之,我希望在运行时加载APK文件并从中执行代码 我使用DexClassLoader成功地加载和实例化了一些类,问题在于读取APK的资源 我想创建一个自定义的上下文对象,我可以使用它来加载这些资源(例如,使用LayoutInflater实例),类似于createPackageContext(),它不适用于我的应用程序,因为它只查看已安装的包 InputStream in = getResources()
DexClassLoader
成功地加载和实例化了一些类,问题在于读取APK的资源
我想创建一个自定义的上下文
对象,我可以使用它来加载这些资源(例如,使用LayoutInflater
实例),类似于createPackageContext()
,它不适用于我的应用程序,因为它只查看已安装的包
InputStream in = getResources()
.openRawResource(R.raw.fileName);
然后从这条流中读取。此示例将打开res/raw/fileName.html进行读取。然而,我不明白为什么要以这样一种有问题的方式从您自己的apk文件中加载类来执行。如果我误解了您需要从其他apk文件加载,那么-谁阻止打开该文件进行输入和读取?它只是一个压缩压缩的压缩文件。我认为您可以构建覆盖数据访问方法的实现,并且您的实例可以包含对从何处读取数据的文件的引用。这是您可以尝试的(我自己没有尝试过,但我搜索文档时就是这么想的):PackageManager.getPackageArchiveInfo`将返回一个
PackageInfo
,这将允许您获取一个ApplicationInfo
。使用该对象,您可以调用PackageManager。getResourcesForApplication
返回一个Resources
对象。