Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android中的APK文件加载上下文_Android_Dynamic_Load_Apk_Android Context - Fatal编程技术网

从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()

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

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

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

            InputStream in = getResources()
                .openRawResource(R.raw.fileName);

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

这是您可以尝试的(我自己没有尝试过,但我搜索文档时就是这么想的):PackageManager.getPackageArchiveInfo`将返回一个
PackageInfo
,这将允许您获取一个
ApplicationInfo
。使用该对象,您可以调用
PackageManager。getResourcesForApplication
返回一个
Resources
对象。