我有一个 android 活动,其中在单击按钮时生成了一个文件夹,以及该文件夹中的一些文件。现在我正在尝试以编程方式获取该文件夹中文件数的计数。我的算法有点像这样:
onClick()
{
createFolder();
createFilesWithinFolder();
countFilesInFolder();
}
在这种情况下,当我尝试使用countFilesInFolder()对文件进行计数时,尽管文件夹和文件实际上已成功创建,但它仍为零。
但如果我这样做并在第一个按钮之后按下第二个按钮,
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();
}
}
我要求文件创建和计数都必须发生在我在第一个算法中说明的相同按钮单击中。我该怎么做?请假设我上面提到的伪函数都是正确的,因为我已经看到它在我的第二个算法中正常工作。