2013-09-11 5 views
0

Я использую MediaStore.ACTION_IMAGE_CAPTURE, чтобы сделать снимок с MediaStore.EXTRA_OUTPUT, чтобы указать на Uri для каталога DCIM/Camera, где хранятся все остальные фото/видео файлы.Галерея Android не обновляется после ACTION_IMAGE_CAPTURE

Файл фотографии успешно выполнен, и я вижу его с помощью ES File Explorer и просматриваю его внутри своего приложения. Однако это не отображается в галерее, когда я использую Intent.ACTION_PICK

Intent selectPictureIntent = new Intent(Intent.ACTION_PICK); 
     selectPictureIntent.setType("image/*"); 

Я читал другие темы на обновления в галерее после картины приходит обратно с помощью

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
       Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

, а также

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _outputMediaUri);  
     LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent); 

Что здесь происходит :(

ответ

4

Почему вы использовали LocalBroadcastManager? Lo calBroadcastManager может отправлять только широковещательные данные внутри вашего приложения. Попробуйте использовать

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _outputMediaUri);  
sendBroadcast(intent); 

Галерея всегда прислушивается к изменению URI. После передачи события файла в Галерею данные, хранящиеся в Галерее, будут обновлены.

+0

Да, это была проблема. Этот код был в фрагменте, поэтому он оказался «getActivity(). SendBroadcast (намерение)». Благодарю. –

+0

, пожалуйста, взгляните на этот вопрос http://stackoverflow.com/questions/31096845/android-how-to-add-recorded-video-in-gallery-and-create-thumbnail-for-it – hhs

0

также может проблема с KITKAT сборки версии .. наверняка вы можете использовать этот код:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
        Intent mediaScanIntent = new Intent(
          Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
        Uri contentUri = Uri.fromFile(out); \\out is your output file 
        mediaScanIntent.setData(contentUri); 
        this.sendBroadcast(mediaScanIntent); 
       } else { 
        sendBroadcast(new Intent(
          Intent.ACTION_MEDIA_MOUNTED, 
          Uri.parse("file://" 
            + Environment.getExternalStorageDirectory()))); 
       } 
Смежные вопросы