6

我试图让 MediaScanner 只扫描一个目录时遇到问题。

我的应用程序拍摄照片,并将它们保存到 sd-card/DCIM/AppPictures/,显然我需要调用 MediaScanner 以使它们显示在图库应用程序中。以下代码确实适用于我的目的:

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

但这似乎太浪费了!当我知道文件的确切位置时,我不想使用资源来尝试扫描整个 SD 卡。我也尝试过以下方法:

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

但这无法产生任何结果。有人可以让我知道完成这项工作的正确方法吗?

4

2 回答 2

1
public static void ScanMyFile(String strFilePath) {
    // Tell the media scanner so it is available to the user.
    MediaScannerConnection.scanFile(null, new String[] { strFilePath }, null, 
            new MediaScannerConnection.OnScanCompletedListener() {
        public void onScanCompleted(String path, Uri uri) {

        }
    });
}
于 2013-11-07T16:07:24.973 回答
0

在我的应用程序中,我也在下载图片。

当我的主要活动(下载图片)开始时,我启动了一个 mediascanner 连接。下载是顺序的,一旦图片到达,我将文件名存储在一个字符串中(下面命名为 currentFile)并“连接”媒体扫描仪:

public class SomeActivity 
          extends Activity implements MediaScannerConnectionClient {

    ....

    protected MediaScannerConnection mMs;

    ....

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        ....
        mMs = new MediaScannerConnection(this, this);
        ....
    }

    @Override
    public void onMediaScannerConnected() {
        mMs.scanFile(currentFile, null);
    }

    @Override
    public void onScanCompleted(String path, Uri uri) {
        mMs.disconnect();
    }


}

要启动扫描,我只是这样做:

currentFile = "/mnt/sdcard/someLocationToScan/somefile.jpg";
mMs.connect();
于 2013-03-29T16:58:00.073 回答