无上下文获取AssetManager

时间:2013-05-23 20:46:17

标签: android android-assets android-context

是否可以在没有上下文的情况下访问AssetManager?我见过其他人的解决方案是扩展Application,并将Context保存在onCreate()中,并创建一个静态getter来返回Context。我觉得这非常草率,打破了封装,因为您现在可以访问上下文中的所有内容到您的整个应用程序。我想我可以减少它只保存AssetManager,但它仍然是一个非常hacky修复。

我知道你可以通过调用类似

的内容来访问没有Context的资源
Resources.getSystem().getString()

但是,通过

访问AssetManager
Resources.getSystem().getAssets()

仅授予您访问某些内置资源的权限,而不是您资产文件夹中的实际内容。

我是否坚持使用hacky Application子类,还是有更简洁的方法?

1 个答案:

答案 0 :(得分:0)

您需要什么资产?只是为了打开文件?可以使用getResourceAsStream方法访问没有Context的资源文件,但它们必须放在与java源文件相同的文件夹中。