У меня есть два действия: основное и обработка.в действии Обработка выполните операцию редактирования имен файлов в папке, а затем запустите сканирование, чтобы обновить его через широковещательную рассылку, и я проверяю, когда сканирование закончится.
//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();
и я получаю "содержание: //media / none / media_scanner "всегда ... если я спрашиваю getMediaScannerUri () после отправки ACTION_MEDIA_MOUNTED, я должен получить что-то отличное от" content: // media / none / media_scanner "???