从资产加载时找不到文件?

File not found when loading from assets?

我在我的资产文件夹中包含了几个预制的 .png 文件,但只有其中一些没有错误:

AssetManager assetManager = context.getAssets();
Inputstream in = assetManager.open(assetName);

其中 assetName 是一个 String 包含类似 "myPic.png".

它似乎适用于某些文件,但对于其他文件它会抛出 java.io.FileNotFoundException: myPic.png,即使我在“资产”文件夹中看到它与许多其他似乎正在削减的文件一起出现。

确保您的变量名称与您的文件名称相对应,它们区分大小写。这可能是某些文件未被读取的原因。

显然在 Android Studio 中关闭/重新打开项目足以使其正常工作。不知道为什么它一开始没有注意到所有资产,但现在它在重新启动后就注意到了。

如果您在 Android 仪器测试期间 运行 遇到此问题,可以通过更改以下内容来解决此问题:

ApplicationProvider.getApplicationContext().getAssets().open(YOUR_FILE)

对此:

InputStream inputStream = InstrumentationRegistry.getInstrumentation().
     getContext().getAssets().open(YOUR_FILE);

应用程序提供者知道将资源请求重定向到您的检测资源,然后回退到被测应用程序,但它没有相同的资产智能