我有两个活动: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运行扫描时重命名文件,当我在处理活动中编辑文件时,最后我在文件夹中找到大小为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”总是...如果我问了getMediaScannerUri()之后 发送ACTION_MEDIA_MOUNTED,我应该得到一些不同于“content:// media / none / media_scanner”???