3

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

我知道你可以通过调用类似的东西来访问没有上下文的资源

Resources.getSystem().getString()

但是,通过

Resources.getSystem().getAssets()

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

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

4

1 回答 1

0

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

于 2013-05-23T21:29:44.170 回答