ボタンのクリックでフォルダーが生成され、フォルダー内のいくつかのファイルが生成されるAndroidアクティビティがあります。現在、そのフォルダー内のファイル数をプログラムで取得しようとしています。私のアルゴリズムは次のようになります。
onClick()
{
createFolder();
createFilesWithinFolder();
countFilesInFolder();
}
この場合、countFilesInFolder()を使用してファイルをカウントしようとすると、フォルダーとファイルが実際に正常に作成されているにもかかわらず、ゼロになります。
しかし、代わりにこれを行い、最初のボタンの後に 2 番目のボタンを押すと、
onClick1()
{
createFolder();
createFilesWithinFolder();
}
onClick2()
{
countFilesInFolder();
}
ファイル数もちゃんとカウントしてくれます。後で countFilesInFolder() 関数を確認したところ、フォルダー自体の作成が検出されていないため、すべてがゼロになっていることがわかりました。
この問題を解決するために、次のメディア スキャナー クラスを使用してみましたが、うまくいきませんでした。
class SingleMediaScanner implements MediaScannerConnectionClient
{
private MediaScannerConnection mMs;
private String mPath;
SingleMediaScanner(Context context, String f)
{
mPath = f;
mMs = new MediaScannerConnection(context, this);
System.out.println("Commencing connection");
mMs.connect();
}
@Override
public void onMediaScannerConnected()
{
//mMs.scanFile(mPath, null);
mMs.scanFile(mPath, null);
Log.i("SCANNER","Scanning :"+mPath);
}
@Override
public void onScanCompleted(String arg0, Uri arg1) {
// TODO Auto-generated method stub
Log.i("SCANNER","Media Scan Completed");
mMs.disconnect();
}
}
最初のアルゴリズムで説明したように、ファイルの作成とカウントの両方が同じボタンのクリックで発生する必要があります。どうすればいいですか?上記の疑似関数はすべて正しいと仮定してください。これは、2 番目のアルゴリズムで適切に動作することを確認したためです。