android - Android 从 DCIM 文件夹中获取图像
问题描述
我正在构建画廊应用程序。我得到了代码中图片的路径,如图所示。在 logcat 中,我可以看到的消息,I/DCIM PATH: /storage/emulated/0/DCIM/Camera
我在这个文件夹中有 3 张图片。然而,代码没有列出其中的文件,并给出了一个错误,Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference.
这里有什么问题?还有库可以从存储中检索图像吗?
private void getImagesFromDCIM() {
pDialog.setMessage("Fetching images from DCIM folder...");
pDialog.show();
File dcimPath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera");
if (dcimPath.exists()) {
Log.i("DCIM PATH", dcimPath.toString());
pDialog.hide();
Log.i("DCIM PATH", dcimPath.listFiles().toString());
File[] files = dcimPath.listFiles();
for (int i = 0; i < files.length; i++) {
Image image = new Image(files[i].getName(), files[i].toString());
}
mAdapter.notifyDataSetChanged();
} else {
pDialog.hide();
}
}
解决方案
我想我发现了问题所在。
只调用listFiles()
一次!
推荐阅读
- android - 如何在 RecyclerView 中处理链接到特定卡片的视图持有者?
- javascript - 如何让量角器等待 webpack-dev-server 启动?
- python - 如何以有效的方式将单词列表转换为邻接列表
- c - Codility:MaxZeroProduct - 复杂性问题
- javascript - 如何连接如果模板django与变量js
- web - 同一背景图片在网页上多次显示
- android - 确定是否存在生物识别硬件以及用户是否已在 Android P 上注册生物识别
- r - ggplot.Predict 的标题变量
- c++ - double、long double、float和float128的比较?
- copy - 通过 Azure 数据工厂的复制活动在保存在 cosmosDB 中的数据中添加附加列