Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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库模块的资产中读取json文件_Android_Json - Fatal编程技术网

从Android库模块的资产中读取json文件

从Android库模块的资产中读取json文件,android,json,Android,Json,最近,我看到可以在Android库中包含资产,并在2018年11月的官方文档中进行更新: 但它只是简单地描述了“资产”是一个可选库,可以包含在Android库中。它不包括如何访问它们 现在我有一个有几个Android库的项目。每个库包含一个级别,或者它包含在一个抽象级别上。为了实现良好的隔离,理想情况下,每个库都应该能够使用自己的Android库中包含的代码和资产 所以,我的问题是,既然现在我们可以包括资产,在我的例子中是一个json文件,在Android库内部,有没有任何方法可以直接从And

最近,我看到可以在Android库中包含资产,并在2018年11月的官方文档中进行更新:

但它只是简单地描述了“资产”是一个可选库,可以包含在Android库中。它不包括如何访问它们

现在我有一个有几个Android库的项目。每个库包含一个级别,或者它包含在一个抽象级别上。为了实现良好的隔离,理想情况下,每个库都应该能够使用自己的Android库中包含的代码和资产

所以,我的问题是,既然现在我们可以包括资产,在我的例子中是一个json文件,在Android库内部,有没有任何方法可以直接从Android库本身的代码访问这些资产,而不使用应用库中的代码

提前谢谢 P.d.:如果有人感兴趣,这里是我项目的源代码:

看起来您想使用

进口后

import android.content.res.AssetManager;
并初始化它

AssetManager assetManager = getAssets();
您可以使用

InputStream input = assetManager.open("PersistentDestinations.json");

请注意,您必须转换InputStream才能将其传递给例如JSONObject。(例如,请参阅)

您不能使用FileUtils.readFileToString(新文件(路径),Charset.defaultCharset())进行读取吗;嗯,这是一种非常残忍的方式。如果Android为您提供了一种更好的getAssets方法,为什么我们不使用它呢?我不确定这一点,但getAsserts是一种在ContextWrapper上实现的方法,至少我可以从Android库访问它,我认为这是不可能的。您能提供一个更完整的答案吗?通过传递上下文并使用AssetManager实际上是可行的。谢谢你的回答。