gpt4 book ai didi

Android:媒体扫描器未运行的问题

转载 作者:搜寻专家 更新时间:2023-11-01 09:15:11 25 4
gpt4 key购买 nike

我有一个用户可以用来绘图的应用程序,然后将该绘图作为 .png 文件“导出”到外部存储(如果存在)。生成 PNG、将文件复制到外部所有这些工作都很顺利,但出现了一个相当独特的问题;导出后,如果用户通过“我的文件”导航到图像(在本例中为运行 2.2 的 Samsung Tab),他们可以看到 .png 文件,但是当他们打开它时,屏幕会黑屏大约 10 秒...然后他们看到图像,此外,图像也不会显示在用户的“图库”应用中。

现在,如果用户通过 USB 将设备连接到计算机,或重新启动设备,他们可以从我的文件中毫无问题地访问图像,并且从那时起它们将出现在“画廊”中,但同样,任何新的电子竞技文件遇到相同的问题,直到他们再次循环/连接设备。

我的想法是,这必须与媒体扫描器有关(至少在“画廊”问题的情况下,它肯定是)。

因此,由于我的目标是 Api 8+,我正在尝试使用静态 MediaScannerConnection.scanFile() 方法让操作系统重新扫描并将我的图像添加到图库中,等等。也希望这能解决打开图像时奇怪的延迟问题。这是我的代码:

MediaScannerConnection.scanFile(
context,
new String[] { "/mnt/sdcard/MyApp" },
null,
null
);

当我导出图像并运行上述调用时,LogCat 会为我提供以下条目:

DEBUG/MediaScannerService(2567): IMediaScannerService.scanFile: /mnt/sdcard/MyApp mimeType: null
DEBUG/MediaScannerService(2567): onStartCommand : intent - Intent { cmp=com.android.providers.media/.MediaScannerService (has extras) }
DEBUG/MediaScannerService(2567): onStartCommand : flags [0], startId [1]
DEBUG/MediaScannerService(2567): ServiceHandler:handleMessage volume[null], filePath[/mnt/sdcard/MyApp]
DEBUG/MediaProvider(2567): getSdSerial() sd state = removed
INFO/Database(2567): sqlite returned: error code = 17, msg = prepared statement aborts at 43: [SELECT DISTINCT sd_serial FROM images WHERE sd_serial LIKE 'external_0x%']
ERROR/MediaProvider(2567): removeMediaDBData called
DEBUG/MediaScanner(2567): prescan enter: path - /mnt/sdcard/MyApp
DEBUG/MediaScanner(2567): prescan return

因此,看起来 MediaScanner 正在获取正确的位置,但未能找到正确的 SD 卡,但失败了。 Samsung Tab 具有内置的非 SD 外部存储,Android 通过 Environment.getExternalStorageDirectory() 提供访问权限。我如何告诉它扫描非 SD 存储?

有什么想法可以继续吗?

保罗

最佳答案

在这里找到了解决方案,其中涉及通过 Intent 向媒体扫描器发送广播请求:

How to update the Android media database

从未弄清楚 MediaScannerConnection.scanFile 的问题。

关于Android:媒体扫描器未运行的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com