仅在一个目录中调用MediaScanner(android)

SJo*_*GSO 6 java android image android-mediascanner

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

我的应用程序拍照,并将它们保存到SD卡/ DCIM/AppPictures /,显然我需要调用MediaScanner才能显示在图库应用程序中.以下代码适用于我的目的:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
Run Code Online (Sandbox Code Playgroud)

但它似乎太浪费了!当我确切知道文件的位置时,我不想使用资源尝试扫描整个SD卡.我也尝试了以下内容:

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

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

Gom*_*ku7 0

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

当我的主要活动(下载图片)开始时,我启动媒体扫描仪连接。下载是连续的,一旦图片到达,我将文件名存储在字符串中(下面名为 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();
    }


}
Run Code Online (Sandbox Code Playgroud)

要启动扫描,我只需执行以下操作:

currentFile = "/mnt/sdcard/someLocationToScan/somefile.jpg";
mMs.connect();
Run Code Online (Sandbox Code Playgroud)