- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 Fragment
中异步下载文件,并希望在下载完成时调用 MediaScannerConnection.scanFile()
。如果我坐下来等待下载完成而不离开我的 Fragment(或其托管 Activity ),我就能得到想要的结果。我面临的问题是 MediaScannerConnection.scanFile()
需要上下文,我不想限制用户停留在 Fragment
/Activity
只是为了让上下文不为空。
如何在后台使用 MediaScannerConnection.scanFile()
以便我可以扫描文件并在扫描完成时显示 Toast
,同时仍在导航在我的应用程序的其他部分(甚至跳出我的应用程序)?
这就是我目前正在扫描的方式(使用上下文):
public static void mediaScanFile(Context context, String path) {
MediaScannerConnection.scanFile(context,
new String[]{path}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.d("Tag", "Scan finished. You can view the image in the gallery now.");
}
});
}
最佳答案
首先,从可能很快就会被破坏的Fragment
下载文件不是一个好主意。您应该使用前台服务。
如果您仍然想坚持使用 fragment ,在您的情况下,您可以使用应用程序上下文。
在开始下载之前,将应用程序上下文的引用存储为 fragment 中的一个字段。
Context appContext;
// Inside onCreateView
appContext = getContext().getApplicationContext();
然后您可以使用应用程序上下文来扫描媒体。
这不会导致内存泄漏,因为应用程序上下文是单个共享实例,并且在应用程序被终止之前不会被销毁。
关于java - 在 fragment 中使用 MediaScannerConnection.scanFile()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637145/
当我运行以下代码行时: MediaScannerConnection scanner = new MediaScannerConnection( this, null ); scanner.c
我应该使用 MediaScannerConnection.scanFile 方法以外的方法来刷新图库吗? 保存新的 jpg 后,我运行媒体扫描器来刷新图库应用程序,就像这样 Media
我正在尝试将文件保存为 Canvas 的 PNG,用户可以在其中绘制一些东西,然后调用 Intent.ACTION_SEND以便用户可以与其他应用程序共享它的绘图。 该代码能够毫无问题地保存文件,但是
我正在开发一个应用程序,在该应用程序中我将图像保存到一个目录,但在我重新启动手机之前图像不会显示在图库中。 这是我的代码 fragment public class SaveTask extends
当我尝试将图像保存到外部目录时,MediaScannerConnection 成功扫描了该目录,但图像未显示在图库中。 public void saveItem() { if (sel
我想从 MediaStore 收集一些信息。有时 .nomedia 文件会导致文件未被扫描,因此我使用显式调用来确保文件已被扫描! 所以我打电话 MediaScannerConnection.scan
我正在从 Fragment 中异步下载文件,并希望在下载完成时调用 MediaScannerConnection.scanFile()。如果我坐下来等待下载完成而不离开我的 Fragment(或其托管
createNewFile() 方法返回 true 并显示文件在我手机上的位置。该文件显示在我手机的文件管理器中,但未显示在资源管理器中。 基本上我在 File 对象上调用 createNewFile
由应用程序触发的重命名文件等更改仅在 Android 设备重启后出现在 USB-MTP 接口(interface)上或在您像这样在 MediaScanner 上注册新文件后(参见 Trigger me
我是一名优秀的程序员,十分优秀!