如何跨包引用Android'资产'?

foo*_*faa 8 android assets packages

我有一个以"免费"和"专业"版本发布的Android应用程序.我已经使用从两个版本引用的基础'库'项目设置了我的项目,这样我的包集看起来像这样:

  • com.example.myapp
  • com.example.myapp.free
  • com.example.myapp.pro

我的基础'library'项目中的一个Activity类将一个帮助文件加载到WebView中:WebView.loadUrl("file:///android_asset/help.html").这个类在'free'和'pro'版本中都有扩展(出于本问题范围之外的原因),但我希望两个版本都引用相同的HTML文件(即父包中的文件).但是,在我目前的设置下,HTML文件需要复制到'file'文件夹''com.example.myapp.free'和'com.example.myapp.pro'包下的'assets'文件夹中./android_asset /"URI工作.

有没有办法指定"file:/// android_asset /"URI,以便它访问父包中的'assets'目录?

我找到的部分解决方案涉及从'raw'目录中读取HTML文件,然后将生成的字符串推送到我的WebView对象,但除了纯文本的HTML页面(例如带有图像的HTML页面)之外,这样做会很麻烦.像我一样).

干杯.

mhs*_*ith 7

由于安德鲁怀特没有解释如何做他推荐的反对,我会告诉你:

Context otherContext = context.createPackageContext("other.package.name", 0);
AssetManager am = otherContext.getAssets();
Run Code Online (Sandbox Code Playgroud)

这似乎并不那么糟糕.我已经确认这两个软件包不需要共享用户ID.