我有两个活动: Main和Processing。在Processing活动中,对文件夹中的文件名执行编辑操作,然后启动扫描以通过广播进行更新,并在扫描完成时进行检查。
//end batch renaming operation
//start updating media store library
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory())));
//show toast "updating"
op_media_mounted.show();
//catch when updaitng op ends
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_FINISHED);
filter.addDataScheme("file");
BroadcastReceiver mReceiver = (new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)) {
Toast.makeText(frm_elabora.this, "Scan complete.", Toast.LENGTH_SHORT).show();
}
}
});
registerReceiver(mReceiver, filter); 如果扫描正在运行,我想传递阻止处理的活动。我可以先检查扫描是否正在运行,然后启动第二个处理活动?就像这样。
Button btnstart = (Button)findViewById(R.id.btn_start);
btnstart.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if ( there_isnt_scan_for_new_media_file )
startActivity(intent_processing);
else{
wait_until_ACTION_MEDIA_SCANNER_FINISHED
startActivity(intent_processing);
}我需要检查这一点,因为如果我在android运行扫描时重命名文件,当我在processing活动中编辑文件时,最终我在文件夹中找到了大小为0字节的其他文件,就像更改之前一样。所以我必须等待扫描完成。我找不到解决办法。
更新:我找到了这个
public static Uri getMediaScannerUri ()
Since: API Level 1
Uri for querying the state of the media scanner.我试一下这个
//send broadcast
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" +
Environment.getExternalStorageDirectory())));
//show media scanner state
Toast.makeText(frm_elabora.this,
MediaStore.getMediaScannerUri().toString(),
Toast.LENGTH_SHORT).show();我总是得到"content://media/none/media_scanner“...如果我在发送ACTION_MEDIA_MOUNTED之后请求getMediaScannerUri(),我应该得到与“content://ACTION_MEDIA_MOUNTED/none/media_scanner”不同的内容?
发布于 2012-03-20 21:27:47
你有没有试过MEDIA_SCANNER_VOLUME
通常,当介质扫描程序正在运行时,此列不为null。
https://stackoverflow.com/questions/9647478
复制相似问题