gpt4 book ai didi

android - 在 Android 程序开始时初始化 MediaScanner

转载 作者:行者123 更新时间:2023-11-29 16:24:10 27 4
gpt4 key购买 nike

我有一个 Android 程序,它通过加载用户的一些媒体开始。有时程序会崩溃——无论是在模拟器上还是在实际手机上。我发现这是因为有时媒体仅在 Activity 运行一段时间后才对程序可用。

发生这种情况时,这是典型日志输出的顺序:

  1. DEBUG/MediaScanner(166): opendir/system/media/failed, errno: 2 <--PROGRAM ERROR HERE
  2. DEBUG/MediaScannerService(166):完成内部卷扫描
  3. DEBUG/MediaScannerService(166):开始扫描外部卷
  4. VERBOSE/MediaProvider(166):/sdcard 卷 ID: 45454545
  5. VERBOSE/MediaProvider(166):附加卷:外部
  6. DEBUG/MediaScannerService(166):完成扫描外部卷 <-- 这是在程序中间

程序在 #1 处出错,因为它试图加载直到 #6 才可用的媒体。

有没有办法强制Android在程序开始时结束MediaScannerService?

或者,有什么方法可以检查 MediaScannerService 何时完成扫描?

谢谢。

最佳答案

您可以在代码中添加一个BroadcastReceiver 并处理ACTION_MEDIA_SCANNER_FINISHED 广播。它实际上是在扫描完成后由 MediaScannerService 发送的。希望下面的示例代码对您有所帮助。

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
filter.addDataScheme("file");
registerReceiver(mReceiver, filter);

BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
Toast.makeText(MediaScannerActivity.this, "Scan complete.", Toast.LENGTH_SHORT).show();
}
}
};

关于android - 在 Android 程序开始时初始化 MediaScanner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520142/

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