【问题标题】:How to refresh whole SD card?如何刷新整个 SD 卡?
【发布时间】:2014-02-20 15:59:51
【问题描述】:

我正在编写一个媒体播放器应用程序。我在网格视图中显示我的 sd 卡的所有视频。它工作正常。如果有人使用文件专家或文件管理器等其他应用程序对这些视频进行更改(如重命名、删除)不会影响我的网格视图。我的网格仍然显示旧名称和已删除的文件。为了解决这个问题,我添加了刷新按钮。在这个我使用

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                Uri.parse("file://" + Environment.getExternalStorageDirectory())));

但这在 KITKAT 版本中不受支持。然后在谷歌之后,我得到了这个解决方案 Android How to use MediaScannerConnection scanFile 但我不知道如何在刷新按钮单击时使用 MediaScannerConnection 扫描我的 sdcard。

【问题讨论】:

    标签: android android-mediaplayer android-mediascanner


    【解决方案1】:

    您可以使用 MediaScannerConnection 中的 scanFile 方法

    例如刷新特定目录下的文件,可以调用:

    for (File child : fileFolder.listFiles()) {
        if (child.isFile()) {
            fName = child.getName();
    
        MediaScannerConnection.scanFile( MyActivity.this,
            new String[] { "folderPath" + fName },
            null,  new MediaScannerConnection.OnScanCompletedListener() {
                  public void onScanCompleted(String path, Uri uri) {
                     //file scanned
                  }
            });
        }
    }
    

    查看源代码here

    希望这有帮助!

    【讨论】:

    • 嗨吉隆。我如何以编程方式运行媒体扫描仪服务。这样我就可以在我的网格视图中拥有最近的文件
    • 您发布了您有一个刷新按钮。因此,1)您可以将此代码(根据您的需要修改)放在按钮上的 onClick 中,或者 2)您写道对视频进行了更改 - 每次更改后只需输入此代码,它就会刷新
    • 我的应用不会做任何改变。流程是这样的。 1.将视频文件加载到我的应用程序。 --> 杀死我的应用程序。 --> 打开文件专家 --> 重命名一些视频文件 --> 杀死文件专家 --> 现在打开我的应用程序 --> 我的应用程序仍然显示旧名称机器人而不是新名称。我想解决这个问题
    • 在完成MediaScannerConnection 完成的扫描后,调用notifyDataSetChanged() 刷新您的GridView
    • 是的..我能做到。但我不知道如何使用这个 MediaScannerConnection API。我想扫描整个 SD 卡以获取新的视频文件(如果存在)等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多